Страница 2 из 3

Re: Поиск правильного решения

Добавлено: 07.02.2017 08:21:22
beria
igordz писал(а):Что посоветуете насчет сортировки?


Для начала сразу хранить дату в родном и нормальном универсальном человеческом вещественном формате TDateTime для которого есть кучи прекрасно работающих процедур и функций для чего угодно, в том числе и для приведения в текстовый вид и переконвертировать в строки только по надобности))) При этом одномоментно все проблемы снимаются.

Re: Поиск правильного решения

Добавлено: 07.02.2017 09:26:08
vitaly_l
zub писал(а):Ждем тему про непонятный вылет при закрытии и забагованость canclose))

Это неинтересная тема, а вот про умную сортировку... Вот про эту:
zub писал(а):Овнердрав процедура отображает имя ноды на основе данных взятых по индексу\указателю в соответствии с настройками, процедура сортировки сортирует ноды на основе данных взятых по индексу\указателю на основе настройки способа сортировки. Настройки отображения\сортировки можно менять налету без пересоздания дерева.

Было бы интересно впитать информацию, из просвещённых умов.

Код: Выделить всё

TMyFileInfo=record
  Path,Name:String;
  CreateTime,ModifyTime:TDateTime;
  Attr:TMyFileAttr;
end;


Вот Ваш рекорд: :roll: Как по нему сортировать налету в treeview?

.

Re: Поиск правильного решения

Добавлено: 07.02.2017 11:59:05
zub
yстанавливаешь обработчик события OnCompare

Код: Выделить всё

procedure TForm1._CompareItems(Sender: TObject; Node1, Node2: TTreeNode;var Compare: Integer);

в нем из Node1, Node2 восстанавливаешь привязаные к ним данные и сравниваешь как тебе надо, результат возвращаешь в var Compare: Integer

Re: Поиск правильного решения

Добавлено: 07.02.2017 12:26:52
vitaly_l
zub писал(а):в нем из Node1, Node2 восстанавливаешь привязаные к ним данные и сравниваешь как тебе надо, результат возвращаешь в var Compare: Integer

Тюууу.... :cry: Это что же, сортировка - совсем без моторчика? :roll: Вот ведь: какие были изначально простые методы сортировки от художников, до тех пор пока не вмешались программисты... :wink: :mrgreen:

.

Re: Поиск правильного решения

Добавлено: 07.02.2017 12:37:46
zub
Незнаю что там у тебя за моторчики... надо уметь только сравнивать ноды между собой. Вижу в этом только упрощения

Re: Поиск правильного решения

Добавлено: 07.02.2017 12:45:52
vitaly_l
zub писал(а):Незнаю что там у тебя за моторчики... надо уметь только сравнивать ноды между собой. Вижу в этом только упрощения

:oops: Это был юмор: "без моторчика" - значит: ручками нужно, писать код, а с моторчиком, это значит, что сортировка уже сделана, до нас, разработчиками. Всё зависит от задачи. Лично мне сортировка - ненужна. А вот, ТС, не знаю. Если он привязывает файлы в дату, то конечно же Ваш метод 100% более правильный, а если не привязывает, то метод художников проще :roll: ИМХО (т.к. ничего мудрить ненужно).

Re: Поиск правильного решения

Добавлено: 07.02.2017 14:22:34
zub
Какой метод?

Код: Выделить всё

  TreeView1.SortType:=stText;
  TreeView1.AlphaSort; 

если этот - то это то о чем я и говорю, только вместо нашего CompareItems используется встроеный, сравнивающий имена нод.

а если посортировать стринглист перед загрузкой в тривиев, то садись, 2!

Re: Поиск правильного решения

Добавлено: 07.02.2017 14:45:21
vitaly_l
zub писал(а):то садись, 2!

О это хуже, если топик стартер, так решает учебные задачи, то всё зависит от квалификации учителя:
1) если учитель хороший (как я например), то он скажет: Молодец - отличное неординарное решение, но можно было отсортировать, вот так "TreeView1.AlphaSort;".
2)
А если учитель "злой и коварный" как Zub, то естественно он скажет "садись, 2", т.к. в алгоритме с использование стринг листа - это отступление от стандарта и поиск нестандартного решения. При этом, "злой и коварный" Zub не учитывает что, далеко не все компоненты умеют автоматически сортировать.

Но самое, главное, "злой и коварный" Zub, не заметил, что предложенную "злым и коварным" Zub-ом сортировку, художники, предлагали изначально, вот так: "TreeView1.Items.SortTopLevelNodes();" и заметь-те, "злой и коварный" Zub, что описание: procedure SortTopLevelNodes(SortProc: TTreeNodeCompare);, ведёт к вот такой развязке: TTreeNodeCompare = function(Node1, Node2: TTreeNode): integer of object;, в смысле, ненужно выдумывать вот это, TForm1._CompareItems, когда мудрые художники предложили систему заложенную в TreeView1. Так что, садитесь "злой и коварный" Zub Вам, по Вашей-же методике: 2 - за невнимательность!

Re: Поиск правильного решения

Добавлено: 07.02.2017 14:56:10
zub
уговорил, пусть 3!

Re: Поиск правильного решения

Добавлено: 07.02.2017 14:59:05
vitaly_l
zub писал(а):уговорил, пусть 3!

Ладно, Zub, уговорил, садись тоже: 3 - за предложенный Type для возможности сортировки "на лету", по всем параметрам. :wink:

Re: Поиск правильного решения

Добавлено: 07.02.2017 21:49:21
olegy123

Код: Выделить всё

    procedure TForm1._CompareItems(Sender: TObject; Node1, Node2: TTreeNode;var Compare: Integer);

Сравниваешь Node1, Node2
в Compare заносишь
если Node1 меньше Node2 то Compare = 1
если Node1 равно Node2 то Compare = 0
если Node1 больше Node2 то Compare = -1

Добавлено спустя 5 часов 12 минут 54 секунды:
кто такие художники?

Re: Поиск правильного решения

Добавлено: 07.02.2017 23:44:46
vitaly_l
olegy123 писал(а):кто такие художники?

Кто такие Художники? Ну... Это такие классные люди, которые всё делают художественно и подтрунивают время от времени над программистами. Подмигивают им всячески, :wink: глаза вверх закатывают :roll: и выцыганивают у программистов всяческие секреты :mrgreen: . В общем очень хорошие и добрые люди :twisted: На самом деле: художники - это маска, за которую можно спрятаться, когда общаешься с программистами, у которых больше знаний и навыков, когда они начинают ругаться на неграмотные высказывания художников :cry: .

Re: Поиск правильного решения

Добавлено: 08.02.2017 01:34:26
pupsik
Это такие классные люди, которые всё делают художественно
в принципе художественно посоветовали :mrgreen:
По поводу кода...
Добавьте рекурсию и почитайте вики о деревьях. Можно сделать разные варианты сортировок, фильтрацию...

п.с.
персонально художнику: я принудительно формат даты поставил не из-за кривости сортировки... :lol:
zub хм.. у вас художники нечто красной тряпки для быка? :))))

Re: Поиск правильного решения

Добавлено: 08.02.2017 07:31:45
zub
>>На самом деле: художники - это маска, за которую можно спрятаться
Так ты не художник...))

Re: Поиск правильного решения

Добавлено: 09.02.2017 15:04:11
vitaly_l
olegy123 писал(а):кто такие художники?

Только программист может задать вопрос: Кто такие художники?...

И когда программисту объясняешь суть понятия "художники", только программист может сказать:
zub писал(а):Так ты не художник...


И если, теперь программисту, сказать: НЕТ - Я КОСМОНАВТ!
То только программист спросит, а: Кто такие космонавты?
И получив объяснение понятия "космонавты", только программист, сделает вывод: Так ты не космонавт...


.