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

MaxLength property has no effect when setting text in code

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

例如,当我设置 MaxLength = 12 时,

但我可以做到:

Edit1.Text := '012345678901234567890123456789'

这是正常行为吗? Delphi东京也是这样吗?
更重要的是,有没有一种简单的方法可以防止这种情况发生?

10.2也是一样。东京。 属性 TEdit.Text 继承自 TControl(通过 TCustomEditTWinControl)。而TControl.SetTextMaxLength一无所知,所以不限制文本长度。它间接发出 CM_TEXTCHANGED 消息,但是 TCustomEdit 拦截了它,也没有使用它来限制文本长度。

防止这种情况的唯一方法可能是不要分配任何超过 12 "characters" 的值,或者将 TCustomEdit 子类化为您自己的 TMyEdit,在您自己的 TMyEdit 中进行检查 SetText 程序,安装组件并使用它。