![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
volvo |
![]()
Сообщение
#1
|
Гость ![]() |
Привет всем...
![]() Что-то глючит меня в последнее время... Есть такой вопрос: на форме лежат 2 ListBox-а (ну, на самом деле это TTntCheckListBox, но это не имеет никакого значения, ибо Items и у тех и у других - потомок TStrings)... Так вот... В эти 2 компонента одновременно записывается информация. В первый, скажем, имя какого-то класса, во второй - его же ID, то есть, в конце концов получаем 2 заполненных ListBox-а, каждый N-ый элемент которых соответствует друг другу... Теперь сам вопрос: возникла необходимость отсортировать первый ListBox по алфавиту, но нужно пересортировать и второй, так, чтобы опять же элементы с одинаковыми индексами друг другу соответствовали (оба листбокса будут прокручиваться синхронно, и нужно, чтобы ID класса соответствовал расположенному напротов него имени класса)... Количество элементов в ListBox-ах - порядка сотен, возможно - до нескольких тысяч, так что если просто написать процедуры сортировки по индексам, это будет довольно длительный процесс (по сравнению со встроенными сортировками, в частности)... Может есть какая-то другая возможность? |
Гость |
![]()
Сообщение
#2
|
Гость ![]() |
Привет!
Попробуй TValueListEditor. (Delphi7) Там TStrings такого формата: key=value |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата Попробуй TValueListEditor Ну, и что мне это даст? Он с каких-то пор умеет работать с Unicode? Нет, а TTntCheckListBox - умеет, и это - обязательное условие для проекта... Так что использование НЕюникодных компонентов отпадает...Да и встроенных методов сортировки у TValueListEditor нет, нужно делать самому, а написать я и для тех компонентов могу. Вопрос был в основном в скорости обработки... P.S. Кстати, у меня не D7, а D6... |
Malice |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
trminator |
![]()
Сообщение
#5
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Может быть, элементы второго списка выдернуть временно в TStringList, а у него есть симпатичный метод CustomSort? CustomSort для работы просит пользовательскую функцию сравнения двух элементов. Тогда получится отсортировать его по ключам из первого списка. А второй обычным Sort.
Или наследника этого TTnt... родить специально для второго списка -- всё как у папы кроме одного свойства -- "первый" список, и измененный метод сортировки. Но это ежели исходники есть (а вряд ли... эта TNT поди вся закрытая-платная?) -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
trminator, ты о чем это?
Цитата эта TNT поди вся закрытая-платная? ![]() TntWare Delphi Unicode Controls Все бесплатно и открыто... С CustomSort попробую... |
Noof |
![]()
Сообщение
#7
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Мужской Репутация: ![]() ![]() ![]() |
не легче ль держать массивы, сортировать их и затем пихать в эти листы.
(может я не понял... но вообще это вроде как самый первый вариант и легкий) -------------------- ...
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата Количество элементов в ListBox-ах - порядка сотен, возможно - до нескольких тысяч, так что если просто написать процедуры сортировки по индексам, это будет довольно длительный процесс + сюда же еще ты предлагаешь добавить временнЫе расходы на добавление элементов в ListBox?В принципе, вопрос решен... Клиента устраивает такое быстродействие, проект сдан... |
Noof |
![]()
Сообщение
#9
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Мужской Репутация: ![]() ![]() ![]() |
если было много операций над итемами плюс их колво было б не маленьким - то наверно да.
-------------------- ...
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 9:35 |