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

Имам приложение, където има много форми, които следват визуално наследяване на формата. Всеки формуляр има стандартни компоненти на delphi, както и потребителски компоненти.

Трябва да се добави функционалност за валидиране на формуляр. Това означава, че до контрола трябва да се начертае малък червен кръг или астрично изображение, ако стойността на контролата не е валидна.

Тази функционалност за чертане трябва да е достъпна чрез приложението за всяка контрола.

Какъв е най-добрият начин за прилагане на тази функционалност? Има ли някакъв модел на проектиране, който може да помогне?

Благодаря и поздрави, Паван.


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


Отговори (2)


JVCL на JEDI има компонента TJvValidator, който ще направи точно това вместо вас. Ето връзка към контейнера TJvValidators, за да започнете.

person Ken White    schedule 20.11.2009
comment
Но внимавайте: Този компонент е труден за разбиране без пример (но има такъв в инсталацията на jvcl), валидаторите, които идват с jvcl, са предимно безполезни и в зависимост от това колко често се извиква, ще забави вашия GUI код. Но концепцията е хубава. - person dummzeuch; 21.11.2009

Нещо, което съм направил в миналото в моя метод за валидиране, беше да променя цвета на контролата на $00C4C4FF за всяка стойност, която не е преминала валидирането, или clWindow, ако премине. (Използвам постоянен clInvalidEdit). В проекти, в които също използвам Raize контроли с плоска граница, също настройвам границата на clRed. Моите задължителни полета обикновено имат цвят $00B0FFFF (отново постоянен clRequiredEdit).

Най-често ще създам метод с име ValidateForm, който връща булево значение, ако формулярът е валиден, или false, ако не е. Validateform проверява всяко поле за валидност и коригира цветовете, където е необходимо, и задава активния контрол на първото поле, което е неуспешно.

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