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

Вниз

Можно ли назначить 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
15-1246781165
Andy BitOff
2009-07-05 12:06
2009.09.13
Не работает клавиатура на ноуте. Что может быть?


15-1247776855
Юрий
2009-07-17 00:40
2009.09.13
С днем рождения ! 17 июля 2009 пятница


15-1247559834
Dennis I. Komarov
2009-07-14 12:23
2009.09.13
ico Windows


2-1247176562
Zonder2008
2009-07-10 01:56
2009.09.13
Найти вхождение подстроки через определенное количество символов


15-1247728694
desc
2009-07-16 11:18
2009.09.13
PostgreSQL, доступ из одной БД в другую, построение views...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский