Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.16;
Скачать: CL | DM;

Вниз

Вопрос простой, аж смешно по 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.041 c
10-1080657973
Timego
2004-03-30 18:46
2005.01.16
Delphi &amp; COM: How to Do Singleton Com-server?


3-1102687806
Apophis
2004-12-10 17:10
2005.01.16
DBGrid - Доступ к столбцу...


1-1103098374
kingdom
2004-12-15 11:12
2005.01.16
Как найти пересечение фигур


4-1101539901
DelphiN!
2004-11-27 10:18
2005.01.16
Свойства ярлыка


1-1104224195
Vasiliy
2004-12-28 11:56
2005.01.16
Помогите нужен тулбар