Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хранение Integer в Combobox [D6, Win2k]


Страницы:   1 2

Влад Утюмов ©   (2002-09-27 07:55:00) 

Подскажите новичку, плз наиболее прямой способ решения задачи.
Есть комбобокс на форме. В нем, кроме строк, хочется хранить целочисленные значения (ключи таблицы в БД, но это не важно). Из документации выясняю, что есть

AddItem(Item: String, AObject: TObject)

Вроде то что надо. То что Integer это не TObject - не беда, полминуты - готова обертка вокруг Integer, унаследованная от TObject

И тут натыкаюсь на то, что TStrings не владеет обжектами, что их надо самому удалять. А чтобы самому удалять, надо их еще где-то хранить, и получается уже бред.

Лезут в голову разные мысли, типа поменять поведение TComboBox путем наследования или складывать ссылки на обжекты в отдельную корзину, а потом вытряыхивать разом, или хранить ключи вообще отдельно, в массиве каком-нибудь.

Но думается, что у такой тривиальной и распространенной, ИМХО, задачи не должно быть сложного и уродливого решения. Душа желает простоты.

Влад.


MBo   (2002-09-27 09:50:00) [21]

>что integer не станет снова каким-то Smallint или Int64
Почему он должен ими стать????


kronprince   (2002-09-27 09:49:00) [22]

2MBo © (27.09.02 08:34)
Можно и так если быть увереннным что integer не станет снова каким-то Smallint или Int64

Я для этих целей сделал объект TDictionary, если хош скину


MBo   (2002-09-27 08:34:00) [23]

ComboBox1.Items.AddObject(AString,Pointer(AInteger));

j:=Integer(ComboBox1.Items.Objects[i]);

Ничего в этом случае выделять не надо, Integer как раз помещается в 4 байтах, уже имеющихся под указатель


Song   (2002-09-27 08:33:00) [24]

Всю ифнормацию можете хранить в этих же строках. Однако рисовать итемы самому не выводя эту служебную информацию.


Separator   (2002-09-27 08:20:00) [25]

ComboBox1.Items.Add(IntToStr(N)); {N: integer}
N:= StrToInt(ComboBox1.Items.Strings[i]); {но тока если в i-той ячейке храниться число, иначе ошибка}


sask   (2002-09-27 08:15:00) [26]

IntToStr и StrToInt...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо