Форум: "Базы";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
ВнизВопрос простой, аж смешно по DBComboBox Найти похожие ветки
← →
Rule © (2004-12-10 16:08) [0]значит надо такой комбобокс чтобы содержимое его небыло привязнао к источнику БД, а список заполнялся из источника из определенного поля ...
DBComboBox и DBLookupComboBox это немного другое, в первом случае, содержимое, это из источника, а список выпадающий, статические значения а во втором случае и первое и второе из бд берется ....
конечно есть обходные пути, типа при открытии датасета и при его изменении заливались значения ...
но мож есть другие варианты ?
← →
Johnmen © (2004-12-10 16:30) [1]TComboBox
:)
← →
Соловьев © (2004-12-10 16:35) [2]DBComboBox ... это немного другое, в первом случае, содержимое, это из источника, а список выпадающий, статические значения
Нутак и заполни их программно
← →
Dmitriy O. © (2004-12-10 16:35) [3]Tcombobox.item.add()
← →
Rule © (2004-12-10 16:43) [4]отвечаю всем сразу так как у все ответ одинаковый :)))
и его я написал в воросе
конечно есть обходные пути, типа при открытии датасета и при его изменении заливались значения ...
но если других предложений нет, то проще будет свой комбобокс написать, наследник от TComboBox
:)))
ну в принципе я так и думал
← →
Leksiy © (2004-12-10 16:55) [5]ересь сжечь ... тебе же ответили по человечески заполняй его програмно из одно таблицы что тебя не устраивает ? нормально скажи
← →
DSKalugin © (2004-12-10 18:40) [6]
Procedure Field2ComboBox(var fld:TFIBStringField; cbm:TComboBox);
var bkm:TBookmark; // (c)DSKalugin
begin
cbm.Clear;
bkm:=fld.DataSet.GetBookmark;
fld.DataSet.DisableControls;
fld.DataSet.First;
try
while not fld.DataSet.EOF do begin
cbm.Items.Add(fld.AsString);
fld.DataSet.Next;
end;
cbm.ItemIndex:=0;
fld.DataSet.GotoBookmark(bkm);
finally
fld.DataSet.EnableControls;
fld.DataSet.FreeBookmark(bkm);
end;
end;
Вызывать так
Field2ComboBox(fmDM.tbSellListSELLER_NAME, cbSellist);
← →
Vemer © (2004-12-10 18:50) [7]В похожих случаях использую DBLookupComboBox с незаполненным DataSource и ручками пихаю его .KeyValue куда надо. Работает на ура.
← →
Соловьев © (2004-12-10 19:01) [8]DBComboBox ... это немного другое, в первом случае, содержимое, это из источника, а список выпадающий, статические значения
Нутак и заполни их программно
← →
Dell3r © (2004-12-11 10:32) [9]Form.OnCreate
with Table2 do
begin
Close;
IndexName:="";
Open;
while not EOF do
begin
ComboBox1.Items.Add(FieldByName("NameOld").AsString);
// в комбобокс добавляются все записи из колонки NameOld.
Next;
end;
First;
end;
ComboBox1.OnChange
//для отображения в Гриде записи с номером выбранным в Комбобоксе
with ComboBox1 do begin
if ItemIndex <> -1 then
if not Table2.Locate("NameOld", Items[ItemIndex], []) then
ShowMessage(Items[ItemIndex -1] + "Последняя запись"); end;
← →
Rule © (2004-12-11 12:08) [10]Соловьев © (10.12.04 19:01) [8]
так мне как раз наоборот надо тоесть содержимое не должно быть привязано к бд, тоесть оно мне надо только для анализа, в принципе решение предложено
Vemer © (10.12.04 18:50) [7]
2Dell3r © (11.12.04 10:32) [9]
а как же случаи изменения добавления, и редактирования .... не предусмотрено и вот вторая часть как раз не надо чтобы в таблице позиционровалось на записи, просто не нада ...
2DSKalugin © (10.12.04 18:40) [6]
ну это извините прямо в лоб, спасибо конечно за совет, но в принципе до этого так и делал ... хотелось бы более эффективные способы найти ...
← →
ЮЮ © (2004-12-14 05:16) [11]> значения а во втором случае и первое и второе из бд берется
Cм. Vemer © (10.12.04 18:50) [7]
Выпадающий список - обязательно, а DataSource и DataField могут ьыть незаполнены, в этом случае получаешь именно то, что тебе надо
← →
Submarine (2004-12-14 08:01) [12]Ну самый простой способ и наиболее рациональный, когда нужно воспользоваться записями помещеными в Combobox, а именно брать не имена а коды этих обьектов (например таблица в нем 2 поля Id, Name), и мы хотим видеть в Combobox Name, а подставлять id, используйте обьекты:
fmdtmdl.help.sql.Add("Select *");
fmdtmdl.help.sql.Add("From CATALOGCONTENT");
irec:=0;
with fmDTMDL.help do
begin
open;
while not EOF do
begin
Combobox1.items.add(FieldByName("name").AsString);
idd:=tidd.create;
idd.Iobject := FieldByName("ID").value;
ComboBox1.Items.Objects[IRec] := idd;
irec:=irec+1;
next;
end;
end;
А использовать запись, вернее ее код
i1:=Tidd(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).Iobject
← →
Submarine (2004-12-14 08:02) [13]Ну и соответственно вначале обьявить
type
TIDD = class
Iobject: integer;
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.035 c