![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в 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