我要在一个已经绑定了DataSource的DBGRID中的某一列添加TComBox控件,要求每一条记录在该列所对应的CELL中都有一个TCombox控件,而且控件随着数据的滚动而滚动,不是在某一个位置不动,就像属性框一样,
   我知道,如果该列是数据集中的对应的列,直接设置该列pickList为一个TStrings就能实现,我现在是,该列不是数据集中的对应的列,设置该列的pickList为一个TStrings就不行了,我现在的做法是在该列的每一个可见的CELL中创建一个TCOMBOX,可这些控件并不会跟着数据的一下滚动而滚动,
   大家说说,我该如何才能实现自己创建的TCOMBOX随着数据的滚动而滚动?

解决方案 »

  1.   

    在DBGrid上浮动一个TCombox控件,加入你想要的东东,并相应关联,即可!
      

  2.   

    用dbcombobox,用与grid用同一个datasource
      

  3.   

    我觉得你能放在combobox里的东西,也应该能放在picklist里,因为items和picklist属性都是Tstringlist型。我一般不太会直接用tstringlist,所以都是先把东西放到一个combobox中(临时),再picklist:=items;
      

  4.   

    这个不知道是不是你想要的,在form上先加一个combobox
    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
    if (gdFocused in State) then    begin
          ComboBox1.Left := Rect.Left + DBGrid1.Left;
          ComboBox1.Top := Rect.Top + DBGrid1.top;
          ComboBox1.Width := Rect.Right - Rect.Left;
          ComboBox1.Height := Rect.Bottom - Rect.Top;
          ComboBox1.Visible := True;
        end;
      

  5.   

    两种方法,一、在dbgrid上浮动一个dbcombobox,二、用dbrid的picklist属性