delphi的edit只有一个onchange事件,没有专门区分interactivechange与programmaticchange,使用中如何区分是操作修改还是程序中赋值修改,试过modified属性,对dephi自己的tedit控件,好像没问题,但用第三方控ehlib的tdbnumerediteh,与tms的tadvedit区分不了,有什么办法区分两类事件?

解决方案 »

  1.   

    楼主一定要区别的话,在TEdit.Onchange事件时,找到是否有键盘录入。通过键盘录入,我想能能够区别的。
      

  2.   

     一般情况,为了程序的一致性,不管是谁导致了值变化,都要做相应处理。但是如果楼主一定要区分,就只好增加一个标志字段,程序设置前,置一下位, onchange事件里检查这个标志, 设置完了取消标志位。
      

  3.   

    顶,设置一个变量,在onChange中判断下!
      

  4.   

    if    var flag:Integer;        
    procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
    begin
    flag:=1;
    end;procedure TForm1.btn1Click(Sender: TObject);
    begin
    if (not edt1.Text='') and flag=1 then
    begin
      ShowMessage('人为赋值');
    end;
    end;
    应该是这个意思吧,  flag变量为 标志
      

  5.   

          没有编译,意思是 edit中有内容,且在 在edit中按下键盘, (内容为字符型,不能是backspace之类的) 就是 用户人为的动作