длинна текста
В одном из постов, если не ошибаюсь в блоге у Всеволода Леонова, довелось мне прочесть про забавный кейс. В программе было предусмотренно ограничение длины поля ввода пароля. При том, ограничивалось оно тихо, просто “съедая” лишние символы. Естественно, что после этого с паролями возникла неразбериха. В принципе, вопрос ограничения длины поля ввода сам по себе является философским, а возможно даже теологическим, но просто взять и “откусить хвост” вводимому тексту, на мой взгляд – не совсем правильно. Однако, в большинстве случаев, если задать свойство MaxLength для контрола, отвечающего за ввод текста, именно так и произойдет.
Компонент TcxTextEdit и другие компоненты из набора DevExpress могут красиво решать данную проблему благодаря событию OnValidate.
Код, который я использую выглядит примерно так:
procedure TfrmEditBenefit.txtBenefitNamePropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); begin if Length(txtBenefitName.Text)>125 then begin ErrorText:= 'Benefit name value is too long.'; Error:= True; end; end;
Для наглядности можно показать значок ошибки рядом с полем ввода.
txtBenefitName.Properties.ValidationOptions:= [evoRaiseException, evoShowErrorIcon];
Выглядеть это будет примерно так:
Ошибка генерируется если текст длиннее допустимого значения при попытке передать фокус другому контролу. При этом пользователь зразу видит что и где не так. По-моему очень удобно и наглядно.
Другие статьи серии:
DevExpress. TIPS & TRICKS #0
DevExpress. TIPS & TRICKS #1
DevExpress. TIPS & TRICKS #2
DevExpress. TIPS & TRICKS #3
DevExpress. TIPS & TRICKS #4
DevExpress. TIPS & TRICKS #5
DevExpress. TIPS & TRICKS #5.5
DevExpress. TIPS & TRICKS #6