Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];

Вниз

Сортировка ListBox (значение Stlye = lbVirtualOwnerDraw)   Найти похожие ветки 

 
Reals   (2003-12-08 04:36) [0]

Здравствуйте, уважаемые!
Помогите пожалуйста отсортировать ListBox со значением Style = lbVirtualOwnerDraw.
Кто знает, что можно сделать.
Данные (100000 записей) загружаються из файла в класс TFileStream. Потом при помощи события ListBox`а OnDrawItem из FileStream записи добавляються в ListBox.
Или может кто подскажете как отсортировать записи в TFileStream?

Заранее премного благодарен.

P.S. Переключить ListBox в Style = lbStandard или еще в какое-то значение отличное от lbVirtual не подходит.


 
Babay   (2003-12-08 05:15) [1]

ИМХО использовать промежуточный StringList. А у него свойство Sorted есть.


 
Reals   (2003-12-08 06:25) [2]

А как это повлияет на скорость выполнения?
Очень сильно или нет?

P.S. У меня очень важна скорость загрузки данных в ListBox.


 
Babay   (2003-12-08 07:50) [3]

Это зависит от того что там у тебя реализуется...
Я ж не знаю чего там может у тебя еще какие объекты к пунктам пристегиваются или еще чего. Так что пробуй тебе все карты в руки.
Или опиши задачу подробнее чего за файл чего за данные как нужно выбирать и т.д. (все что посчитаешь нужным но подробнее) И почему именно lbVirtualOwnerDraw ?
Может и другие решения будут.

ИМХО 100 000 записей в ListBox ??? !!! юзер запарится их смотреть.


 
Amoeba   (2003-12-08 10:53) [4]

Отображение порядка 100000 элементов в LisеBox - это просто нонсенс и форменное издевательство над пользователем. Подумай хорошенько над структурой и дизайном. Определенно что-то в них не так.


 
Reals   (2003-12-08 13:59) [5]

Ok. опишу что к чему.
Я пишу обычный словарь (Румынско-Русский), как Lingvo.
Пользователь вводит слово в Edit, а в ListBox`е оно выделяеться.
Одним вловом, все сделано как в Lingvo.
Почему lbVirtualOwnerDraw? Потому что я записи добавляю через OnDrawItem и мне нужно указать количесво записей ListBox`у свойству Count. А ему можно присваивать только когда Style = какому-то из lbVirtual.
Вот это одна проблема. Если бы мне не нужно было указывать ListBox.Count я бы конечно использовал другой Style.
Я проверил несколько вариантов вставки записей в ListBox, OnDrawItem оказался самым быстрым выводом.
Может имеються другие какие-то советы, с удовольствием выслушаю и прму во внимание.
Структура файла, который находиться в TFileStream имеет 5 полей типа String. В ListBox я вывожу только одно поле.

Вот вроде и все.

Спасибо!


 
Reals   (2003-12-08 14:03) [6]

Подскажите пожалуйста еще, как использовать событие OnDataFind в ListBox?
Я никак не могу понять, как его использоваться. Весь инет облазил ничего не нашел по этому событию.

Спасибо огромное!


 
Reals   (2003-12-08 18:42) [7]

Мастера, подскажите что-нибудь!!

Заранее премного благодарен!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
1-62047
Y2003
2003-12-06 00:25
2003.12.19
Прблема с Ntdll.dll


14-62254
ASt
2003-11-25 03:45
2003.12.19
IMHO


3-61897
dimm
2003-11-27 20:20
2003.12.19
Создание новой таблицы средствами Delphi


14-62194
euru
2003-11-25 10:05
2003.12.19
Download по почте


4-62324
frost
2003-10-23 17:26
2003.12.19
Ярлык





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский