在代码中设置文本时,MaxLength属性无效

时间:2018-09-14 06:40:27

标签: delphi delphi-7

我注意到,当我设置Edit或DBEdit控件的MaxLength属性时,这不会阻止我在控件上放置比代码中的MaxLength大的文本。

例如,当我将MaxLength设置为12时,

  • 我无法使用键盘输入更长的值
  • 我无法使用复制/粘贴功能粘贴较长的文本

但我可以这样做:

Edit1.Text := '012345678901234567890123456789'

这是正常行为吗?德尔福东京也是如此吗?
更重要的是,有一种简单的方法可以防止这种情况发生吗?

1 个答案:

答案 0 :(得分:2)

与10.2相同。东京。属性TEdit.Text是从TControl继承而来的(通过TCustomEditTWinControl)。并且TControl.SetTextMaxLength一无所知,因此它不限制文本长度。它间接发出CM_TEXTCHANGED消息,但是截获此消息的TCustomEdit也不使用该消息来限制文本长度。

防止这种情况的唯一方法可能是不要分配超过12个“字符”的任何内容,或者将TCustomEdit子类化为您自己的TMyEdit,然后在您自己的SetText中进行检查过程,请安装该组件并使用它。