在delphi开发系统中,用dbgrid作为输入画面, 如果我想用dbcombobox 组合框控件 ,即在dbgrid中
显示组合框 ,有什么方法可以做到......就像以前的vfp 中grid 里可以自由的加listbox,combobox等控件,不知delphi可否
显示组合框 ,有什么方法可以做到......就像以前的vfp 中grid 里可以自由的加listbox,combobox等控件,不知delphi可否
解决方案 »
- delphi+access 图片显示、替换问题
- Delphi编译错误中文手册1
- 各位帮忙看看,解决一下我的问题
- WebConnection連接, 出現"could not convert variant of type (Dispatch) into type (Integer)"
- delphi里有算百分数的函数么?
- 有没有高手或大虾把dcu的文件还原成pas
- 但极板的用什么数据库好
- dephi可以实现类似于Vb的控件数组,和DoEvent功能吗?有没有例程
- 诚心请教大家在excel中生成图表的问题,搞了半天还是不明白555555555
- 用MODEM拨号到路由器,现我要做一软件对拨号的日志进行查询统计.我如何取出CISCO5300中的拨号日志?
- 请教delphi2005的窗体设计样式怎么设置成delphi7或以下那种,不是固定的样式??大家帮忙阿.
- 为什么在2000下显示全白的程序,在98下显示全黑?
设置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;
2)、DBGrid指定单元格未获得焦点时不显示DBComboBox,设置DBGrid1的OnColExit事件如下:
procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
If DBGrid1.SelectedField.FieldName = DBComboBox1.DataField then
begin
DBComboBox1.Visible := false;
end;
end;
3)、当DBGrid指定列获得焦点时DrawDataCell事件只是绘制单元格,并显示DBComboBox,但是DBComboBox并没有获得焦点,数据的输入还是在单元格上进行。在DBGrid1的KeyPress事件中调用SendMessage这个 Windows API函数将数据输入传输到DBComboBox上,从而达到在DBComboBox上进行数据输入。因此还要设置KeyPress事件如下:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (key < > chr(9)) then
begin
if (DBGrid1.SelectedField.FieldName =DBComboBox1.DataField) then
begin
DBComboBox1.SetFocus;
SendMessage(DBComboBox1.Handle,WM_Char,word(Key),0);
end;
end;
end;