Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.09.13;
Скачать: CL | DM;

Вниз

Можно ли назначить ListBox.Items без копирования ?   Найти похожие ветки 

 
b/@. ©   (2009-07-09 12:07) [0]

Добрый день.

Занимаюсь оптимизацией модуля, и возник вот такой вопрос...

Припустим у нас есть некий глобальный справочник такого вида

январь
февраль
март
...

это может быть любой упорядоченый список строковых значений, список филиалов, подписка журнала мурзилка или подобное, и этот список грузиться в начале работы программы в
spisok: TStringList;.

И есть несколько диалоговых окон, в котором из этого списка нужно чтото выбрать и вернуть индекс выбора пользователю.

При этом в этом диалоговом окне при назначении ListBox.Items этого списка - получается как-бы две копии одного и того же списка.

Внимание вопрос:
Можно ли каким-то образом назначить ListBox.Items список строк, чтобы при этом не происходило создание двух экземпляров списка ?


 
Anatoly Podgoretsky ©   (2009-07-09 12:37) [1]

> b/@.  (09.07.2009 12:07:00)  [0]

Можно, но вероятно, что потом будешь бороться с невалидными ссылками.


 
Palladin ©   (2009-07-09 12:51) [2]

TListBox.Style:=lbVirtual;


 
b/@. ©   (2009-07-09 14:34) [3]


> Palladin ©   (09.07.09 12:51) [2]
> TListBox.Style:=lbVirtual;

Можно и так - но хотелось бы единый механизм как для ListBox так и для ComboBox ?


> Anatoly Podgoretsky ©   (09.07.09 12:37) [1]
> Можно, но вероятно, что потом будешь бороться с невалидными ссылками.

А как ?
Пробовал делать

Items.Free();
Items := spisok;

Но вываливается AV при этом - наверное из-за того что пытается выполниться SetItems у уже освобожденного класса.

Впринципе можно сделать обёртку и перенести FItems в паблик - но так делать хочеться в последнюю очередь... может как то иначе можно заставить думать ListBox, что нужно обращаться не к своему списку а к моему ?


 
sniknik ©   (2009-07-09 15:11) [4]

> хотелось бы единый механизм как для ListBox так и для ComboBox ?
это уже сделано для баз, данные вынесены в отдельные рекордсеты, а визуальные компоненты только их отображают.
изучай.


 
И. Павел   (2009-07-09 15:13) [5]


> И есть несколько диалоговых окон, в котором из этого списка
> нужно чтото выбрать и вернуть индекс выбора пользователю.
>


Можно при вызове диалогового окна менять Parent у ListBox на это окно. Правда, координаты, align и др. тоже придется перенастраивать.


 
b/@. ©   (2009-07-09 15:57) [6]


> sniknik ©   (09.07.09 15:11) [4]
> это уже сделано для баз, данные вынесены в отдельные рекордсеты, а визуальные компоненты только их отображают.изучай.

Спасибо. Посмотрю.
Просто была мысль - для "списочных" контролов c выбором, таких как ListBox, ComboBox, RadioGroup, CheckListBox и т.п. сделать возможность внешнего источника строк, чтобы не дублировать по десять раз...


 
Loginov Dmitry ©   (2009-07-09 20:56) [7]


> При этом в этом диалоговом окне при назначении ListBox.Items
> этого списка - получается как-бы две копии одного и того
> же списка.
>
> Внимание вопрос:
> Можно ли каким-то образом назначить ListBox.Items список
> строк, чтобы при этом не происходило создание двух экземпляров
> списка ?


К чему такие усложнения? Неужели памяти перестало хватать? Или при копировании программа виснет?

Тогда - база данных!



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

Текущий архив: 2009.09.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
15-1247731310
oldman
2009-07-16 12:01
2009.09.13
Была когдато-то старая поговорка...


2-1247479333
lamerz
2009-07-13 14:02
2009.09.13
многопоточность для TCP IP


1-1215107303
Zheksik
2008-07-03 21:48
2009.09.13
Как провести линию на компоненте фигура(Shape)?


15-1247320167
TIF
2009-07-11 17:49
2009.09.13
Windows 98


1-1214477815
yaric
2008-06-26 14:56
2009.09.13
выгрузка chartobject-а в html