DBGridEh中 如何使某个字段出现下拉选择框
注意:下拉框的内容‘为另外一个数据表的内容,可以包括好几个字段’,
就象EHLIB中自带的DEMO1的效果。请各位大虾门尽量写多一点,我看了DEMO1的相关设置,试了一下没弄出来,不知道哪里错了,所以希望各位写清楚些,谢过先!
注意:下拉框的内容‘为另外一个数据表的内容,可以包括好几个字段’,
就象EHLIB中自带的DEMO1的效果。请各位大虾门尽量写多一点,我看了DEMO1的相关设置,试了一下没弄出来,不知道哪里错了,所以希望各位写清楚些,谢过先!
解决方案 »
- DEIPHI开发的应用程序连接INTERBASE数据库在XP下连接速度非常慢!
- 100分求图片处理。Delphi如何得到图片的素描效果。。不够我再加
- 关于ACCESS表小数位数的问题!!高分!!!!赶工程,分不够再加!!!!!
- 新手求学delphi,望提供建议
- 怎样才能使当前窗品,按Enter键,自动跳格。高手们帮帮忙?
- 大家看看这个程序,总是提示table是忙的
- 这个打印作业的问题大家能解决吗???一直困扰我
- 急!!!如何根据窗口是否SHOW来启停控件的特定工作
- 急!谁能给我条型码字库!多谢!
- 如何搜索本站信息?
- flash 播放问题,我是初学者,请教各位高手
- 请问VCL控件和ACTIVE控件一样吗?
lookupdisplayfields字段用分号间隔开
goog luck!
好象不行啊,DEMO1设的不是这样的
有谁清楚啊
先创建一个次DataSet,就是要显示下拉的,其中要包括与主DataSet相关联字段;
再在主DataSet建一LookUp字段,比如snamel,用以替换原sname显示;而此snamel是显示在DBGridEh中的;主DataSet与次DataSet是通过sname连接;
然后就可以在DBGridEh字段的ListDisplayFields输入你要显示的字段,用;隔开
lookupdisplayfields字段用分号间隔开
就可以啦
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
//ShowMessage('in');
if (gdFocused in State) then
begin if (DBGrid1.SelectedField.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;procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
If DBGrid1.SelectedField.FieldName <> DBComboBox1.DataField then
begin
DBComboBox1.Visible := false;
end;end;
procedure Tsubject1.DBGrid2ColExit(Sender: TObject);
begin
if DBGrid1.SelectedField.FieldName = DBCombobox1.DataField then
DBCombobox1.Visible := false;
end;procedure Tsubject1.DBGrid2DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (gdFocused in State) then
begin
if (column.FieldName = DBCombobox1.DataField) then
begin
DBCombobox1.Left :=Rect.Left + DBgrid1.Left+3;
DBCombobox1.Top := Rect.Top + DBgrid1.Top;
DBCombobox1.Width := Rect.Right - Rect.Left+1;
DBCombobox1.Visible :=True;
end;
end;
end;