我已经把dbcombobox与我的Dbgrid的某个字段进行了关联,,但是我的dbcombobox就是进不了那个字段所对应的单元格,悬浮在外面呀怎么回事情?

解决方案 »

  1.   

    DBGrid指定列上显示DBComboBox设置DBGrid1的OnDrawDataCell事件如下:
    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
    begin
      if (gdFocused in State) then
      begin
        if (Field.FieldName = DBComboBox1.DataField ) then
        begin
          DBComboBox1.Left := Rect.Left + DBGrid1.Left;
          DBComboBox1.Top := Rect.Top + DBGrid1.top;
          DBComboBox1.Width := Rect.Right - Rect.Left;
          DBComboBox1.Height := Rect.Bottom - Rect.Top;
          DBComboBox1.Visible := True;
        end;
      end;
    end;
    这段代码可以啊,我试过了。楼主先设置DBComboBox1的数据源和字段。
    还有最好把DBComboBox1.Left := Rect.Left + DBGrid1.Left;改为
    DBComboBox1.Left := Rect.Left + DBGrid1.Left+2;
      
      

  2.   

    我按gxgyj方法做了,但是代码没被执行,请问要做什么设置,谢谢
      

  3.   


    我做了个实验没有问题啊,我用的是:DBGrid1,Table1,DataSource1,DBComboBox1 没有出现你说的问题.老兄再仔细检查一下.
      

  4.   

    在D7,我的procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);就没有执行,不是什么原因,是不是要做什么设置,但在TForm1.DBGrid1DrawcolumnCell中可以执行,有什么区别,
      

  5.   

    当然,具体的我记不起来了,但我记得procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);这个函数在delphi中是不建议用的,因为是准备不要的函数