Встречаются три операционных системы:
- PC-DOS. Version 7.
- OS/2. Version 4. Merlin.
- А я Windows... Просто Windows.
Посылаю Вам несколько расширенный вариант числовой маски компонента TЕdit c помощью OnKeyPress. В отличие от имеющегося в "Советах", приведенный код не "запирает" поле ввода при заполнении десятичной части, преобразует точку в запятую (для удобства пользователя), не позволяет поставить десятичную запятую перед числом и позволяет стирать знаки в поле ввода клавишей 'Back Space'. Код проверен в Delphi 5.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var//цифровая маска
vrPos, vrLength, vrSelStart: byte;
const
I: byte = 1;
//I+1 = количество знаков после запятой (в данном случае - 2 знака)beginwith Sender as TEdit dobegin
vrLength := Length(Text); //определяем длину текста
vrPos := Pos(',', Text); //проверяем наличие запятой
vrSelStart := SelStart; //определяем положение курсораend;
case Key of
'0'..'9':
begin//проверяем положение курсора и количество знаков после запятойif (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then
Key := #0; //"погасить" клавишуend;
',', '.':
begin//если запятая уже есть или запятую пытаются поставить перед//числом или никаких цифр в поле ввода еще нетif (vrPos > 0) or (vrSelStart = 0) or (vrLength = 0) then
Key := #0 //"погасить" клавишуelse
Key := #44; //всегда заменять точку на запятуюend;
#8: ; //позволить удаление знаков клавишей 'Back Space'else
Key := #0; //"погасить" все остальные клавишиend;
end;
Статья Ограничение TEdit на ввод не-цифровой информации раздела Компоненты и Классы TEdit может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.