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

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

Как в ComboBox загрузить данные из базы [D5]


Бульбаш ©   (2003-04-09 11:45:00) 

Мне необходимо производить выбор значения из базы (kod и name), отображаться должно текстовое значение, а затем в параметр запроса на апдейт другой базы браться значение kod. Аваре компоненты не идут, так как с оракелом работаю. Можно ли решить проблему комбобоксом или существет что-нибудь более удобное???
Подскажите плиз, проект стоит... :(


Sergey Masloff   (2003-04-09 21:27:00) [1]

Бульбаш ©
Обычно если этих код-имя больше 10 то все эти выпадающие списки крайне неэффективны. Я обычно вызываю в таких случаях поисковую форму которая в виде модального диалога дает отобрать нужное и по закрытию диалога присваиваю значения.

Если выборов немного то есть такой грязный хак - у комбобокса Items это TStrings, у которого кроме строк еще есть свойство Objects - массив указателей на объекты каждый из которых соответствует каждой строке. Так как указатель это 32битное значение то ты в память выделеную под указатель спокойно можешь записать Integer значение кода.

То есть Items комбобокса перед открытием заполняешь так:
Strings[0] := "name1";
Objects[0] := TObject(kod1);
и так далее. Когда пользователь выбрал Item, например с индексом 5 соотв. код получаешь так:
Значение кода := Integer(Objects[5]);

>Я здесь никому ничего не доказываю, просто хочу получить помощь >в вещах которые не знаю.
Вот этот ответ мне понравился


malkolinge   (2003-04-09 16:18:00) [2]

Можно комбобокс сделать с гридом :)
Берете грид, а потом смотрите
http://www.delphikingdom.com/helloworld/treecombobox.htm


Соловьев   (2003-04-09 15:00:00) [3]


> доставил удовольствие Вам указать на мою никчемность.

зря ты так, никто тут не зазнается...


Бульбаш   (2003-04-09 14:47:00) [4]

>Вроде у меня не было сына....Может внебрачный ?
В жизни всякое бывает :)
>Возможно... Но, почему то думается, что ты завысил свою самооценку... (Ничего злого !)
Я здесь никому ничего не доказываю, просто хочу получить помощь в вещах которые не знаю. Я получил то что хотел, уже все работает+ доставил удовольствие Вам указать на мою никчемность.
Все цели достигнуты, треп заканчиваю :)


Johnmen   (2003-04-09 13:58:00) [5]

>Добрее нужно быть,

А я разве злой ? :)

>батенька...

Вроде у меня не было сына....Может внебрачный ?
:)))

> для нормального функционирования большинства контор пойдут и "подмастерья".

Возможно... Но, почему то думается, что ты завысил свою самооценку... (Ничего злого !)


Бульбаш   (2003-04-09 13:44:00) [6]

To Johnmen
Да не секрет, в штатном записано инженер-программист. Деньги свои успешно отрабатываю, никто не жалуется. Не всем же быть мастерами, для нормального функционирования большинства контор пойдут и "подмастерья". Добрее нужно быть, батенька...


Johnmen   (2003-04-09 13:13:00) [7]

>Раньше когда на локале работал, использовал лукапбоксы и
>прочее. Думал также и на оракеле пойдет. Уже нарисовал добрый
>кусок. В общем давал Edit или Insert для базы и забивал
>значения, затем Post. Все было красиво, пока не посадил 2
>юзверей, сразу пошли взаимные блокировки и невозможность
>дальнейшей работы. После этого я понял что такое SQL.

Мдя-а-а-а...

А себя кем считаешь ? Если не секрет ?


Бульбаш   (2003-04-09 12:57:00) [8]

to ЮЮ
Список заполнил, но не могу взять значение ключа в переменную.
Насколько я понимаю это надо делать в Change? Как обратится к выбранной строке в списке?


Бульбаш   (2003-04-09 12:09:00) [9]

Раньше когда на локале работал, использовал лукапбоксы и прочее. Думал также и на оракеле пойдет. Уже нарисовал добрый кусок. В общем давал Edit или Insert для базы и забивал значения, затем Post. Все было красиво, пока не посадил 2 юзверей, сразу пошли взаимные блокировки и невозможность дальнейшей работы. После этого я понял что такое SQL. Пришлось все пределывать так как описал выше.


ЮЮ   (2003-04-09 12:07:00) [10]

>Жук © (09.04.03 11:47)
DBLookupComboBox
>Я же пишу что аваре не идет, может работать только один юзер, надо все SQL-ем гнать.

1)Если У DBLookupComboBox-а не указывать DataSource и FieldName - это уже и не DBAware, а ListSource - это уже SQL
2)Items - это TStrings, т.е. может хранить не только текст, по и Objects:

Combo.Items.AddObject(Query.Fields[0].asString, TObject(Query.Fields[0].asInteger))

а использовать

Integer(Combo.Items.Object[Index])


Max Zyuzin   (2003-04-09 12:06:00) [11]

>Бульбаш © (09.04.03 11:59)
Даааа... я то думал я большой извращенец :-))) шутка... попробуй сделать со списком... думаю это получше будет чем с мигающими панелями


Соловьев   (2003-04-09 12:04:00) [12]


> Я же пишу что аваре не идет, может работать только один
> юзер, надо все SQL-ем гнать.

что-то я не пойму что ты пишешь...


Бульбаш   (2003-04-09 11:59:00) [13]

Я сейчас поступаю так:делаю невидимую панель, помещаю на нее грид, затем отслеживаю двойной клик на простом едите, после чего вывожу панель, выбираю значение поля, заношу текст в едит,считываю ключевое значение и убираю панель.Юзер видит почти тот же комбобокс. Это меня коллеги залажали что нет значка распахивания. Как вы думаете, стоит ли замарачиваться со списками, или все это выльется в еще больший гимор и стоит оставить все как есть???


Соловьев   (2003-04-09 11:58:00) [14]

мне тоже :)))


Max Zyuzin   (2003-04-09 11:52:00) [15]

>Бульбаш © (09.04.03 11:45)
Я вот делал так, как приедлагает Соловьев © (09.04.03 11:50) но мне и самому это всегда казалось... "извратом" :)


Соловьев   (2003-04-09 11:50:00) [16]

Можно загнать в Items значение name, а потом Искать запросом kod и его подставлять в запрос. Можно конечно еще попробовать с индексом в комбобоксе, но тогда надо динамический массив создать. Сопоставить индексу в масиве значение kod, чтобы не мучаться с Locate...


Бульбаш   (2003-04-09 11:49:00) [17]

Я же пишу что аваре не идет, может работать только один юзер, надо все SQL-ем гнать.


Жук   (2003-04-09 11:47:00) [18]

DBLookupComboBox


Наверх

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