dbgrid中下拉comcobox实现
在dbgrid中可以,在dbgribeh中不行了
procedure Tgudingzichanjixietaizhang.DBGridEh1ColExit(Sender: TObject);
begin
begin
    If DBGridEh1.SelectedField.FieldName  = DBComboBox1.DataField then
    begin
        DBComboBox1.Visible:=false;
   end;
   If DBGridEh1.SelectedField.FieldName  = DBedit1.DataField then
    begin
        DBedit1.Visible:=false;
   end;
end;end;procedure Tgudingzichanjixietaizhang.DBGridEh1DrawDataCell(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 + DBGridEh1.Left;
            DBComboBox1.Top := Rect.Top + DBGridEh1.Top;
            DBComboBox1.Width := Rect.Right - Rect.Left;
            DBComboBox1.Height := Rect.Bottom - Rect.Top;
            DBComboBox1.Visible:=true;
     end;
     if (Field.FieldName = DBedit1.DataField ) then
        begin
            DBedit1.Left := Rect.Left + DBGridEh1.Left;
            DBedit1.Top := Rect.Top + DBGridEh1.top;
            DBedit1.Width := Rect.Right - Rect.Left;
            DBedit1.Height := Rect.Bottom - Rect.Top;
            DBedit1.Visible := True;
     end;
  end;
end;procedure Tgudingzichanjixietaizhang.DBGridEh1KeyPress(Sender: TObject;
  var Key: Char);
begin
begin
    if (key <> chr(9)) then 
    begin 
        if (DBGridEh1.SelectedField.FieldName   =DBComboBox1.DataField) then
        begin
             DBComboBox1.SetFocus;
             SendMessage(DBComboBox1.Handle, WM_Char, word(Key), 0);
        end;
        if (DBGridEh1.SelectedField.FieldName   =DBedit1.DataField) then
        begin
             DBedit1.SetFocus;
             SendMessage(DBedit1.Handle, WM_Char, word(Key), 0);
        end;
    end;
end;end;