![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Надо, чтобы в поле можно было ввести только цифры, разделитель десятичных дробей и удаление, я реализовал это так:
PHP код:
Вся проблема в том, что я не пойму как прикрутить это дело для множества определенных полей Edit, т.к. писать вышеизложенное для каждого поля муторно. И еще может кто подскажет как модернизировать код для того, чтобы если пользователь ввел первой цифрой 0 - автоматически менялось на 0 c разделителем десятичных знаков принятых в системе, т.е. с использованием DecimalSeparator. Заранее благодарен |
|
#2
|
|||
|
|||
|
Самый простой способ, напишите процедуру.
Код:
procedure TForm3.EditText(CurEdit : TEdit; var Key : Char);
begin
case Key of
'0'..'9', #8:;
'.',',': begin
Key := DecimalSeparator;
if Pos(DecimalSeparator,CurEdit.Text)<>0 then Key := #0;
end;
else Key:= #0;
end;
end;А после вызывать: Код:
procedure TForm3.sEdit2KeyPress(Sender: TObject; var Key: Char); begin EditText(sEdit2, Key); end; Сам попробовал, все работает ![]() |
|
#3
|
|||
|
|||
|
спасибо, как вариант учту, может у кого будут еще более изящные решения?
по поводу ведущего нуля есть решения? |
|
#4
|
||||
|
||||
|
Есть решение попроще. На первом edit пишешь:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9', #8:;
'.',',': begin
Key := DecimalSeparator;
if Pos(DecimalSeparator, TEdit(Sender).Text)<>0 then Key := #0;
end;
else Key:= #0;
end;
end; |