DBGridEh控件中的picklist的很方便,但如何实现选择下拉框中的某项后再触发事件呢?该用哪个事件触发呢?直接用DBGridEh的cellchick,好象点了picklist的下拉按纽后根本就没触发任何事件?请问是这样的吗?后来试用数据集中的Datachange,好像也不行啊,因为我的后续事件中就是要动态修改更新数据库,这样在事件中间又触发了datachange?!!我使用ADOQuery,DataSource,DBGridEh使用DataChange触发的代码如下,不知道错在哪里:procedure TForm_Bijiao.DataSource_BijiaoDataChange(Sender: TObject; Field: TField);
var
s:String;
m,n:integer;
begin
s:=DBGridEh_Bijiao.SelectedField.AsString;
m:=DBGridEh_Bijiao.Row-1; //DBGridEh的Row和Col不是从0开始的?!
n:=DBGridEh_Bijiao.Col-1;
if s='极其重要' then
begin
if n=0 then
ADOQuery_Bijiao.First
else
ADOQuery_Bijiao.MoveBy(n-m); //MoveBy 和 RecNo 的指定记录行数有什么不同吗?
if not (ADOQuery_Bijiao.State in [dsEdit, dsInsert]) then ADOQuery_Bijiao.Edit;
ADOQuery_Bijiao.Fields[n].Value:='极其次要'; //这一句修改了数据,post后会再次自动触发DataSource_BijiaoDataChange? ADOQuery_Bijiao.Post;
end;
end;
var
s:String;
m,n:integer;
begin
s:=DBGridEh_Bijiao.SelectedField.AsString;
m:=DBGridEh_Bijiao.Row-1; //DBGridEh的Row和Col不是从0开始的?!
n:=DBGridEh_Bijiao.Col-1;
if s='极其重要' then
begin
if n=0 then
ADOQuery_Bijiao.First
else
ADOQuery_Bijiao.MoveBy(n-m); //MoveBy 和 RecNo 的指定记录行数有什么不同吗?
if not (ADOQuery_Bijiao.State in [dsEdit, dsInsert]) then ADOQuery_Bijiao.Edit;
ADOQuery_Bijiao.Fields[n].Value:='极其次要'; //这一句修改了数据,post后会再次自动触发DataSource_BijiaoDataChange? ADOQuery_Bijiao.Post;
end;
end;
另外,上面代码中的注释也是我不懂的问题,请高手一并指点,谢谢。
条件是失去焦点 你先试一下 不明白的再问我 如果再线的话我会及时看到
使用Columns里的OnUpdateData属性,得以解决。
再次表示感谢。
结题