onchange如何区分在前台操作或是程序中赋值操作?

cxmcxm 2016-05-26 09:37:59
delphi的edit只有一个onchange事件,没有专门区分interactivechange与programmaticchange,使用中如何区分是操作修改还是程序中赋值修改,试过modified属性,对dephi自己的tedit控件,好像没问题,但用第三方控ehlib的tdbnumerediteh,与tms的tadvedit区分不了,有什么办法区分两类事件?
...全文
751 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
三樱椒 2016-07-21
  • 打赏
  • 举报
回复
引用 6 楼 uhjiok123 的回复:
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变量为 标志
没有编译,意思是 edit中有内容,且在 在edit中按下键盘, (内容为字符型,不能是backspace之类的) 就是 用户人为的动作
三樱椒 2016-07-21
  • 打赏
  • 举报
回复
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变量为 标志
骑牛上铂金 2016-07-15
  • 打赏
  • 举报
回复
引用 3 楼 findcsdn 的回复:
一般情况,为了程序的一致性,不管是谁导致了值变化,都要做相应处理。 但是如果楼主一定要区分,就只好增加一个标志字段,程序设置前,置一下位, onchange事件里检查这个标志, 设置完了取消标志位。
顶,设置一个变量,在onChange中判断下!
蓝色光芒 2016-07-12
  • 打赏
  • 举报
回复
引用 2 楼 lyhoo163 的回复:
楼主一定要区别的话,在TEdit.Onchange事件时,找到是否有键盘录入。通过键盘录入,我想能能够区别的。
右键粘贴,就不算,是吧。哎 支持3楼
findcsdn 2016-07-11
  • 打赏
  • 举报
回复
一般情况,为了程序的一致性,不管是谁导致了值变化,都要做相应处理。 但是如果楼主一定要区分,就只好增加一个标志字段,程序设置前,置一下位, onchange事件里检查这个标志, 设置完了取消标志位。
lyhoo163 2016-05-30
  • 打赏
  • 举报
回复
楼主一定要区别的话,在TEdit.Onchange事件时,找到是否有键盘录入。通过键盘录入,我想能能够区别的。
doloopcn 2016-05-27
  • 打赏
  • 举报
回复
这个没有区分的吧 如果是手工赋值,一般都得自己设置一个状态变量

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧