![]() |
|
|
Регистрация | << Правила форума >> | 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; Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра. |