我有一个相当大的设置表单,我想用班级中的数据填充它。所以我做了很多
Edt1.text := ASettings.FirstThing;
我想避免
Edt1.onchange := nil;
Edt1.text := ASettings.FirstThing;
Edt1.onchange := edt1Onchange;
如何更改文本框中的文本并回避 onchange 事件。
我使用过诸如更改 OnChange 处理程序之类的方法,但更常见的是,我使用标志。
updatingFromCode := true;
Edt1.Text := ASettings.FirstThing;
updatingFromCode := false;
then
procedure TForm1.OnChange(...);
begin
if updatingFromCode then
Exit;
...
另外,我不会将 OnChange 硬编码为实际的 OnChange 过程,而是存储编辑控件的当前值,然后重置它(如果未设置该值,或者如果另一个地方已更改它等,则该值将起作用)
oldOnChange := Edt1.OnChange;
Edt1.OnChange := nil;
Edt1.Text := ASettings.FirstThing;
Edt1.OnChange := oldOnChange;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)