Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];




Вниз

Как заполнить список ListBox-а значениями двух полей...??? 


Бульбаш   (2002-04-05 19:22) [0]

Хочу использовать ListBox для выбора значений поля. Можно ли забить Items значениями двух полей другой базы: ключевого, которое будет вносится в текущую базу при выборе значения из списка, и просмотрового, которое будет отображаться непосредственно при открытии списка. Если возможно то прошу плиз приблизительный набросок кода.
И еще вопрос: хочу попробовать ODAC 3.6. Наш адинистратор предупредил, что некорректно отрабатывает oratable (в эмуляции запроса не проставляется где-то пробел). Если кто столкнулся с этой проблемой, подскажите как решить???



Alexander Vasjuk   (2002-04-05 19:36) [1]

Index := Items.Add("Отображаемое значение");
Items.Objects[Index] := Pointer(Key); // Key: Integer
-----------------------------------------------------
Key := Integer(Items.Objects[ListBox.ItemIndex])



Бульбаш   (2002-04-08 21:55) [2]

Спасибо, попробовал сделать - вылезла проблема: в listbox все нормально, а в combobox не могу выцепить значение ключевого поля.
код приблизительно такой:
DBKuz.Items.AddObject(DM.KuzovNAIM.asString, pointer(DM.KuzovKOD.AsInteger));
Значение пытюсь получить так:
kz:=integer(Avto.DBKuz.Items.Objects[DBKuz.ItemIndex]);
В итоге значение всегда одно и тоже, а нужно использовать именно combobox. Не подскажете, в чем дело???



dymka   (2002-04-08 22:02) [3]

Я долго не думал в подобной ситуации - написал наследника для TComboBox, куда по тупому загонял оба поля, определив внутри еще Keys: TStringList :) Задача была точно такая же... Естественно, у меня ComboBox инициализировался только спец методом и не отображал актуальных данных (мне это было не нужно :).



Бульбаш   (2002-04-09 09:06) [4]

Я понимаю, что извернуться можно крупно, но есть ли какой-нибудь простой и действенный способ заставить combobox вернуть нужное мне значение???



Johnmen   (2002-04-09 09:25) [5]

Вообще непонятно, зачем так гиморроить, когда есть специальные Data-Aware компоненты, напр. DBComboBox и куча др. !



wicked   (2002-04-09 10:22) [6]

2 Бульбаш ©

> Я понимаю, что извернуться можно крупно, но есть ли какой-нибудь
> простой и действенный способ заставить combobox вернуть
> нужное мне значение???

есть... называется TDBLookupComboBox...



Бульбаш   (2002-04-09 11:51) [7]

Как раз таки на лукапах у меня сейчас все и построено, но хочу отойти от локальных методов ( из-за блокировок таблиц).Задумка такая: Все данные ввести в edit и combobox, а затем снять значения в качестве параметров запросов insert или update. Сам понимаю, что гиморно, а как можно по другому. Не давать же .Edit или .Insert. Это же все-таки клиент-серверная технология.



wicked   (2002-04-09 12:06) [8]

твоё дело... с oracle я не работал...
но вот еще способ - для простого combobox"а завести массив ключей где-нибудь отдельно и при выборе элемента из combobox"а брать соответствующий элемент из массива... например, я использовал в качестве массива TList - он хранит pointer"ы, но нам никто не мешает хранить там integer"ы, главное - не забывать об этом... заполнять их надо вместе при активизации формы - для того случая, если данные справочника поменяются во время выполнения программы... и не вздумай сортировать items"ы combobox"а после заполнения...
надеюсь, детали сам продумаешь...



Lusha   (2002-04-09 12:08) [9]

>Бульбаш
Используйте CachedUpdates...



Леха   (2002-04-09 12:11) [10]

Странно что у тебя не работает комбобокс я для этих целей пользуюсь такой фунцией попробуй

function GetObj(CB:TComboBox):integer;
begin
Result:=-1000;
if CB.ItemIndex<>-1 then Result:=integer(CB.Items.Objects[CB.ItemIndex]);
end;

wicked в клиент-сервере зачастую действительно выгоднее прочитать данные и пользоваться ими чем использовать Data Aware компоненты и гадать в какой трансакции они будут работать и чего заблокируют



ne   (2002-04-10 05:39) [11]

я делал проще
1. обявлял наследника от Tobject
2. прописывал там нужные мне поля
3. перед вставкой инит объекта
4. вставляешь обЪект
5. по итеминдекс возвращаешь обект и читаешь данные



Леха   (2002-04-10 15:27) [12]

Есть такой набор компонент Rx, в них RxDBLookupCombo, RxLookupEdit, ... - все реализуется. Если интересно - могу выслать дистрибутивы.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.027 c
14-2650           Arcan                 2002-03-26 12:24  2002.05.02  
Не в тему про модем...


1-2512            Николай.              2002-04-18 06:49  2002.05.02  
Создание exe-файла


7-2701            ATLANTIDO             2002-02-07 20:53  2002.05.02  
ОПЕРАЦИОНКА


7-2693            RUS1                  2002-02-05 12:25  2002.05.02  
Господа!!! Как сделать чтобы прога сама себя удалила после выполнения


1-2548            alexru                2002-04-18 21:47  2002.05.02  
Регулярные выражения как в перле ?