Вам просто нужно использовать свой список в «виртуальном» режиме.
- Поместите TListBox в форму;
- Установите для свойства Style значение lbVirtual.
- Установите для свойства Count количество элементов в вашем списке.
- Затем используйте обработчик OnData для предоставления текста, который будет отображаться по запросу:
Как в этом коде (замените некоторыми данными из вашей базы данных или TStringList или тому подобное):
procedure TForm1.ListBox1Data(Control: TWinControl; Index: Integer;
var Data: String);
begin
Data := Format('Item %d',[Index+1]); // set the text to be displayed
end;
Вы можете дополнительно настроить чертеж, используя стиль lbVirtualOwnerDraw, и вы должны рисовать элементы, используя обработчик события OnDrawItem.В документации Delphi есть некоторый пример кода (по крайней мере, в Delphi 7).;)
В виртуальном режиме вы можете мгновенно отображать 50000 или 100000 элементов.
Для хранения текста использование старого доброго TStringList будет быстрее, чем метод Items элемента TListBoxпотому что это свойство Items [] должно будет взаимодействовать с Windows с «медленными» сообщениями GDI для каждого элемента, тогда как TStringList будет просто сохранять текст в куче Delphi, что обычно намного быстрее.