procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if gdSelected in  State then
  begin
    Combobox1.Parent := DBGrid1;//这一句可以放到窗体创建内,自己想想
    Combobox1.SetBounds(Rect.Left, Rect.Top, Rect.Right-Rect.Left, Rect.Bottom-Rect.Top);
    //显示值;
    Combobox1.Text := DBGrid1.DataSource.DataSet.Fields[DataCol].AsString;
    Combobox1.Visible := true;
  endend;
复选框原理相同

解决方案 »

  1.   

    很不好意思,代码有点问题;将
    Combobox1.Parent := DBGrid1;//这一句不要
    Combobox1.SetBounds(Rect.Left, Rect.Top, Rect.Right-Rect.Left, Rect.Bottom-Rect.Top);
    改成
    Combobox1.SetBounds(Rect.Left + Dbgrid1.Left , Rect.Top + Dbgrid1.Top , Rect.Right-Rect.Left, Rect.Bottom-Rect.Top);
      

  2.   

    在Combobox1.Visible := true里加一句Combobox1.SetFocus;就更好了
      

  3.   

    用columns属性就可以了,自带的combobox和
      

  4.   

    qiubolecn,谢谢你!以后多交流!