Свойство MaxLength не влияет на настройку текста в коде - PullRequest
0 голосов
/ 14 сентября 2018

Я заметил, что когда я устанавливаю свойство MaxLength элемента управления Edit или DBEdit, это не мешает мне помещать текст в элемент управления больше, чем MaxLength в коде.

Когда я, например, устанавливаю MaxLength = 12, тогда

  • Я не могу ввести более длинное значение с помощью клавиатуры
  • Я не могу вставить более длинный текст, используя копирование / вставку

но я могу сделать это:

Edit1.Text := '012345678901234567890123456789'

Это нормальное поведение? Это тоже так в Дельфи Токио?
И что еще важнее, есть ли простой способ предотвратить это?

1 Ответ

0 голосов
/ 14 сентября 2018

То же самое в 10.2. Токио. Свойство TEdit.Text наследуется без изменений от TControl (через TCustomEdit и TWinControl). И TControl.SetText ничего не знает о MaxLength, поэтому он не ограничивает длину текста. Он косвенно выдает сообщение CM_TEXTCHANGED, но TCustomEdit, который перехватывает это, также не использует это для ограничения длины текста.

Единственный способ предотвратить это, вероятно, состоит в том, чтобы не назначать что-либо длиннее 12 "символов" или подкласс TCustomEdit в свой TMyEdit, выполнить проверку в собственной процедуре SetText, установить компонент и используйте это вместо этого.

...