我一直被TMemo(和其他类似控件)只有OnChange事件困扰着。我想知道用户何时更改了文本,而不是在程序中更改文本时。 我知道两种方法来区分用户更改的文本和由程序更改的文本:
- 在以编程方式更改文本之前将OnChange:= NIL。然后恢复OnChange。这很容易出错,因为您需要记住每次从代码更改文本时都要这样做(以及需要对哪些备忘录/编辑应用此特殊处理)。现在我们知道每次调用OnChange时,控件都是由用户编辑的。
- 捕获OnKeyPress,MouseDown等事件。确定实际上是否更改了文本,并手动调用需要在用户编辑文本时调用的代码。 这可能会向已经很大的文件中添加大量过程。