![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
заблокировать(запретить) ввод в TEdit [D7, XP]
zol © (2007-01-02 20:12:00)Здравствуйте.Подскажите как можно заблокировать(запретить) ввод текста и символов в TEdit.Чтоб в него можно было вводить только цифры и точку(или запятую). короче говоря для ввода с подальшей работой математикu...
zol (2007-01-02 21:02:00) [41]
> Спасибо! а то случайно ввожу какой-нить знак - и сразу матюки
> на экране.
Присоединяюсь!
Chort (2007-01-02 21:00:00) [42]
> azl © (02.01.07 20:34) [2]
Спасибо! а то случайно ввожу какой-нить знак - и сразу матюки на экране.
azl (2007-01-02 20:34:00) [43]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var //цифровая маска
vrPos,vrLength,vrSelStart : byte;
const
i : byte=1; //I+1 = количество знаков после запятой (в данном случае - 2 знака)
begin
with Sender as TEdit do
begin
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;
Desdechado (2007-01-02 20:31:00) [44]TMaskEdit
или делать постпроверку после ввода перед использованием