Своё сообщение об ошибке для компонента MaskEdit

В библиотеке VCL есть достаточно удобный компонент для ввода форматированного текста – MaskEdit. При неправильном вводе текста это компонент выдаёт сообщение об ошибке «Invalid input value. Use Escape key to abandon changes».

К сожалению, в MaskEdit отсутствуют штатные средства для редактирования этого сообщения. Поэтому, для того чтобы его изменить (например, написать русский текст), необходимо перехватить и обработать соответствующее исключение. Но, сделать это не так просто.

Дело в том, что метод ValidateError, в котором возбуждается данное исключение, является защищённым (protected)и описан в классе TCustomMaskEdit. Этот класс предок TMaskEdit.

Следовательно, для того чтобы как-то повлиять на обработку данного исключения, нужно создать класс наследник TMaskEdit и переопределить в нём метод ValidateError.

Объявление класса наследника выглядит достаточно просто.

Далее реализуем переопределяемый метод.

Обработку исключения выполним с помощью стандартной конструкции try… except. Для того, чтобы возбудить исключение, вызовем в ,блоке перехватывающем исключения метод класса родителя. В блоке обрабатывающем исключения выведем тот текст сообщения об ошибке, который нам необходим.

Теперь при неправильном вводе текста в компоненте MaskEdit будет отображаться написанное нами сообщение об ошибке.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *