| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Комбо-бокс, значение id |
| Автор: nicka 28.6.2004, 16:48 |
| Работаю в Дельфи7 хочу спросить, но для сравнения возьму Access. Там у ComboBox-а есть свойство value, в котором можно хранить id(записи из таблицы), при том это поле в ComboBox - можно закрыть, чтоб не было видно... Здесь же, у ComboBox есть только свойство Text, допустим я присваиваю ему в ITems значения из таблицы(но куда мне спрятать id записи), оно мне нужно для дальнейшей подстановки выбранной в ComboBox-е записи куда нибудь........... ДУмаю что кто то уже сталкивлся с подобным...довольно частый случай...подскажите чего делать? |
| Автор: Guest 28.6.2004, 17:00 |
| nicka А чем не нравиться DBComboBox ? |
| Автор: nicka 28.6.2004, 17:09 | ||
нет, мне не нужно постоянное соединение с базой, и потом мне так легче.... если можно давайте совет имеено по TComboBox |
| Автор: Albinos_x 28.6.2004, 20:36 | ||
Как ты это делаешь? Говори подгобнее. Работал с комбобоксом, но id мне не пиходилось прятать, так как и не было видно. |
| Автор: Guest 28.6.2004, 21:51 | ||
вот так и заполняю....а вот где хранить id записи для дальнейшего использования? |
| Автор: z-END 28.6.2004, 21:54 |
| а может создать для этого массив где и хранить их? и туда записывать значения id, а привязывать по ItemIndex? |
| Автор: Albinos_x 29.6.2004, 01:53 |
| У TTable есть функция RecNo, обозначающая номер записи. Если не собираешся вставлять записи методом Insert (имеется ввиду вставлять в считываемую (fm_orders.ord_types) БД в ComboBox в процедуре использующей RecNo, т.к. номер записи может поменяться, в зависимости от того куда вставляешь, если используешь Append то можно), то в ComboBox свойство ItemIndex будет равно RecNo. Это свойство доступно как для чтения так и для присваивания, т.е. ты можешь как узнать номер активной записи, так и установить указатель на необходимую. Тогда тебе не надо будет хранить id, а считывать их по номеру записи. |
| Автор: nicka 29.6.2004, 15:50 | ||||
честно говоря не совсем понятно...во первых я не использую TTable , а ипользую TADOQuery, может конечно у него тоже есть RecNo, только я не замечала, чтоб у моего ComboBox ItemIndex совпадал с RecNo запсиси в TADOQuery...???
вот это думаю можно попробовать, значит создать массив длинной в количество записей у TADOQuery и занести туда ItemIndex (0,1...) и id записи...так? попробую посмотрим какие еще возникнут проблемы Хотя странно , что эта проблема(довольно часто нужная в задачах по базам) не как то не удобно решена в Дельфи... |
| Автор: p0s0l 29.6.2004, 17:49 | ||
| Вместо Items.Add делай Items.AddObject типа такого будет:
Если id не integer, то будет посложнее... Добавлено @ 17:53 Еще забыл сказать, что чтобы получить id i-ого элемента в combobox'е, то так: fm_orders.ord_type.Items.Objects[i] |
| Автор: nicka 29.6.2004, 18:03 |
| p0s0l, круто, попробую |
| Автор: nicka 30.6.2004, 16:00 | ||||
p0s0l
это часть работает хорошо...
а вот эта...не получаеться вот например мне надо посадить в базу в таблицу значение id выбранной в combobox'е записи... что мне туда подставить вместо i? |
| Автор: p0s0l 30.6.2004, 20:36 | ||
вместо i надо ставить fm_orders.ord_type.ItemIndex:
|
| Автор: nicka 1.7.2004, 15:47 | ||
p0s0l
попробую, я пробовала без integer, ыи выдавала ошибку не соответствия типов integer и Object... |
| Автор: nicka 1.7.2004, 16:30 | ||
я правда не применяла еще эту функцию,..она что переводит из Object в integer ? |
| Автор: <Spawn> 1.7.2004, 20:11 |
| nicka Items.Objects[ItemIndex] - это массив указателей на экземпляры классов. В Дельфи при создании экземпляра класса возращается указатель(В Си можно без указателя обойтись |