我总是被TMemo(和其他类似控件)只有OnChange事件的事实所困扰.我想知道USER何时更改了文本,而不是以编程方式更改文本.
我知道两种方法来区分用户更改的文本和以编程方式更改的文本:
有一种更优雅的方式吗?
您可以编写一个帮助程序来执行选项1,并在您希望确保在设置文本时不触发任何事件时在框架中使用它OnChange.例如:
type
TCustomEditAccess = class(TCustomEdit);
procedure SetEditTextNoEvent(Edit: TCustomEdit; const AText: string);
var
OldOnChange: TNotifyEvent;
begin
with TCustomEditAccess(Edit) do
begin
OldOnChange := OnChange;
try
OnChange := nil;
Text := AText;
finally
OnChange := OldOnChange;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
TMemo还有也Lines触发的属性OnChange,因此您可以创建另一个接受Lines: TStrings参数的类似过程.
| 归档时间: |
|
| 查看次数: |
713 次 |
| 最近记录: |