当dbgrid内的一个列改变时, 如何使 edit 也跟着改变.(100分)

  • 主题发起人 主题发起人 tom12345
  • 开始时间 开始时间
T

tom12345

Unregistered / Unconfirmed
GUEST, unregistred user!
当dbgrid内的一个列改变时, 如何使 edit 也跟着改变.
也就是说,在dbgrid的一个列内每击一下键盘(字母和数字),edit 都跟着改变.
 
你可以在dbGrid的onKeyDown中写代码,根据当前的列的不同作不同的操作然后
再改写edit.Text即可。
 
你可在table或query的afterscroll下写入事件!
 
两位大侠, 以上方法不能实现.
 
那你就用dbgrid1.SelectedField吧,保证能用。
 
在onkeypress中写代码
 
还是不行吔, 谁能解决这个问题, 我给他 300 分
 
在dbgrid相关联的dataset控件相应的字段change事件里写。
 
在DBGrid的OnCellClick中写

Edit1.Text:=Column.Field.AsString;

Delphi6验证通过
 
HeBaisong, only you,谢谢你们的回复,但还是不能通过,我的要求是
修改一个列内的内容时,edit 也跟着改变。
 
不明白。说具体点
 
利用两个ADOQUERY,它们的DATASOURCE相互连接,两个ADOQUERY分别跟DBGRID和EDIT相连,

这样就可以实现了。
 
procedure TForm4.DBGrid1CellClick(Column: TColumn);
begin
Edit12.Text:=FloatToStr(StrToFloat(DBEdit9.Text)*StrToFloat(DBEdit4.Text));
end;
 
ondatasourcechange
 
在datasource的ONDataChange里面写
edit。text :=adoQuery.fielbyname(‘a’)。asstring;
 
楼主:你的意思是不是当在DBGRID的那一列里输入时,边输入EDIT中的值也在变呢。
用API函数吧,当SELECTEDINDEX=x时,你的键盘输入也反应在EDIT中。
 
ljfbbs的方法好像最简单
 
在table或query的afterscroll下写入事件!

edit1.Text:=adoquery1.fieldbyname('field1').asstring;
这样可以啊,
通过啊
 
通不过, 请看清楚要求。
 
hehe, 我干过这种事。 实现起来很简单的。
思路就是想办法截获dbgrid.InplaceEditor.OnChange事件句柄就成了。
(需要很少一点技巧。因为dbgrid.InplaceEditor是protected的并且可能是nil,另外那个InplaceEditor.Onchange也是protected的)
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
D
回复
0
查看
753
DelphiTeacher的专栏
D
D
回复
0
查看
659
DelphiTeacher的专栏
D
后退
顶部