Добавление символа валидатора рядом с элементом управления в форме Delphi

У меня есть приложение, в котором есть много форм, которые следуют визуальному наследованию форм. Каждая форма имеет стандартные компоненты Delphi, а также пользовательские компоненты.

Необходимо добавить функцию проверки формы. То есть рядом с элементом управления необходимо нарисовать маленький красный кружок или астральное изображение, если значение элемента управления недопустимо.

Эта функция рисования должна быть доступна через приложение для каждого элемента управления.

Каков наилучший способ реализации этой функции? Есть ли какой-нибудь шаблон проектирования, который может помочь?

Спасибо и С уважением, Паван.


person Pavan    schedule 20.11.2009    source источник


Ответы (2)


JEDI JVCL имеет компонент TJvValidator, который сделает это за вас. Вот ссылка на контейнер TJvValidators, которая поможет вам начать работу.

person Ken White    schedule 20.11.2009
comment
Но будьте осторожны: этот компонент трудно понять без примера (но он есть в установке jvcl), валидаторы, которые поставляются с jvcl, в основном бесполезны и в зависимости от того, как часто он вызывается, он будет замедлять ваш код графического интерфейса. Но концепция приятная. - person dummzeuch; 21.11.2009

Что-то, что я делал в прошлом в своем методе проверки, заключалось в изменении цвета элемента управления на $00C4C4FF для любого значения, которое не проходит проверку, или на clWindow, если оно проходит. (использую постоянный clInvalidEdit). В проектах, где я также использую элементы управления Raize с плоской границей, я также настраиваю границу на clRed. Мои обязательные поля обычно имеют цвет $00B0FFFF (опять же константа clRequiredEdit).

Чаще всего я создаю метод с именем ValidateForm, который возвращает логическое значение, если форма действительна, или false, если это не так. Форма проверки проверяет каждое поле на достоверность и настраивает цвета там, где это необходимо, а также устанавливает активный элемент управления на первое поле, которое не удалось.

person skamradt    schedule 20.11.2009
comment
Можем ли мы иметь какое-то пользовательское поведение вместо изменения значений существующих свойств элемента управления. Опять же, как нарисовать красный круг рядом с элементом управления. И самое главное, этот подход должен работать для каждого элемента управления в форме, производного или не производного. - person Pavan; 20.11.2009