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;

解决方案 »

  1.   

    这个事件得在delphi 的帮助中去找,在类TField 中有个事件是触发那个COMbox的Click事件的。你写个过程,把那个事件赋过去就行了!
      

  2.   

    可能是我没说清楚?不是在DBGridEh里真的有个ComBox控件,而是想让Picklist的下拉选择后触发事件,类似ComBox的效果,该用什么事件触发呢?
    另外,上面代码中的注释也是我不懂的问题,请高手一并指点,谢谢。
      

  3.   

    我说的也是啊,就是DBgrid中的PickList下接列表的点击事件啊,在TFiield中的一个事件是这个的。在Delphi帮助里找
      

  4.   

    高手帮帮忙啊,能帮忙找找到底是什么事件吗?我找了找帮助,TField类里好象有个Refreshlookuplist方法,是用这个吗?不知道怎么用啊?
      

  5.   

    你的消息收到 我还是没有确切的看明白你的意思 不过DBGridEhColumnsUpdateData可以实现你的要求
    条件是失去焦点 你先试一下 不明白的再问我 如果再线的话我会及时看到
      

  6.   

    谢谢版主了,我刚刚去找了找,怎么我没有找到ColumnsUpdateData方法?Columns.UpdateData也没有?我的Ehlib是3.5版的?版本太低?
      

  7.   

    我的目的是想实现选择picklist下拉框中的某个选项后,改动本格数据的同时将其他某个数据格里的数据值也改变。不仅是同一条记录的,是任意行的。我先利用moveby或RecNo将焦点移到指定记录,然后修改ADOQuery_Bijiao.Fields[n].Value。上面代码中都已经实现。但我调试时发现,ADOQuery在执行First、open、moveby、 RecNo、post等数据集操作时都会触发DataChange?!!一个过程还没执行完又重新执行同一过程了,结果当然就不对了。所以,不知道该用什么事件来触发?一般都用DataChange和CellClik,好象在这里不太适用?或者我的思路有问题?那请问该如何实现我想要的效果呢?
      

  8.   

    查收消息 有问题记得消息call 我 
      

  9.   

    感谢版主duxin(小伍)的热心帮助,利用消息反复了很多次,问题得到解决。
    使用Columns里的OnUpdateData属性,得以解决。
    再次表示感谢。
    结题