Помощь - Поиск - Пользователи - Календарь
Полная версия: Сортировка двух (!) Listbox-ов
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
volvo
Привет всем... smile.gif

Что-то глючит меня в последнее время...
Есть такой вопрос: на форме лежат 2 ListBox-а (ну, на самом деле это TTntCheckListBox, но это не имеет никакого значения, ибо Items и у тех и у других - потомок TStrings)... Так вот... В эти 2 компонента одновременно записывается информация. В первый, скажем, имя какого-то класса, во второй - его же ID, то есть, в конце концов получаем 2 заполненных ListBox-а, каждый N-ый элемент которых соответствует друг другу... Теперь сам вопрос: возникла необходимость отсортировать первый ListBox по алфавиту, но нужно пересортировать и второй, так, чтобы опять же элементы с одинаковыми индексами друг другу соответствовали (оба листбокса будут прокручиваться синхронно, и нужно, чтобы ID класса соответствовал расположенному напротов него имени класса)...

Количество элементов в ListBox-ах - порядка сотен, возможно - до нескольких тысяч, так что если просто написать процедуры сортировки по индексам, это будет довольно длительный процесс (по сравнению со встроенными сортировками, в частности)... Может есть какая-то другая возможность?
Гость
Привет!
Попробуй TValueListEditor. (Delphi7)
Там TStrings такого формата: key=value
volvo
Цитата
Попробуй TValueListEditor
Ну, и что мне это даст? Он с каких-то пор умеет работать с Unicode? Нет, а TTntCheckListBox - умеет, и это - обязательное условие для проекта... Так что использование НЕюникодных компонентов отпадает...

Да и встроенных методов сортировки у TValueListEditor нет, нужно делать самому, а написать я и для тех компонентов могу. Вопрос был в основном в скорости обработки...

P.S. Кстати, у меня не D7, а D6...
Malice
Цитата(volvo @ 20.09.2006 13:31) *

по сравнению со встроенными сортировками, в частности

Какими например ?
У меня, кстати, TTntCheckListBox вообще нет sad.gif
trminator
Может быть, элементы второго списка выдернуть временно в TStringList, а у него есть симпатичный метод CustomSort? CustomSort для работы просит пользовательскую функцию сравнения двух элементов. Тогда получится отсортировать его по ключам из первого списка. А второй обычным Sort.


Или наследника этого TTnt... родить специально для второго списка -- всё как у папы кроме одного свойства -- "первый" список, и измененный метод сортировки. Но это ежели исходники есть (а вряд ли... эта TNT поди вся закрытая-платная?)
volvo
trminator, ты о чем это?
Цитата
эта TNT поди вся закрытая-платная?


no1.gif

TntWare Delphi Unicode Controls
Все бесплатно и открыто... С CustomSort попробую...
Noof
не легче ль держать массивы, сортировать их и затем пихать в эти листы.
(может я не понял... но вообще это вроде как самый первый вариант и легкий)
volvo
Цитата
Количество элементов в ListBox-ах - порядка сотен, возможно - до нескольких тысяч, так что если просто написать процедуры сортировки по индексам, это будет довольно длительный процесс
+ сюда же еще ты предлагаешь добавить временнЫе расходы на добавление элементов в ListBox?

В принципе, вопрос решен... Клиента устраивает такое быстродействие, проект сдан...
Noof
если было много операций над итемами плюс их колво было б не маленьким - то наверно да.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.