Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Ввод только цифр


Автор: zoiberg111 19.6.2008, 10:18
как сделать чтобы в edit1 можны было вводить только цифры и запятую?

что тут не так?
Код


procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

var m: set of char;
begin
 m := ['0'..'9',','];
 if ord(key) = 13 then edit2.SetFocus;
 if not (key in m) and (ord(key)<>8) then key := chr(0);

end;

подскажите пожалуйста заранее спасибо

Автор: pseud 19.6.2008, 10:39
Цитата(zoiberg111 @  19.6.2008,  10:18 Найти цитируемый пост)
что тут не так?


код рабочий, хотя, конечно, очень простоват.
пользуйся поиском по форуму.
хотябы внизу этой страницы посмотри "А здесь смотрели?"

Автор: Beltar 19.6.2008, 13:06
Можно покурить хелп в направлении TMaskEdit, но его работа показалась мне в свое время несколько запутанной.

Автор: morpheyushka 19.6.2008, 14:13
Цитата(Beltar @  19.6.2008,  13:06 Найти цитируемый пост)
Можно покурить хелп в направлении TMaskEdit, но его работа показалась мне в свое время несколько запутанной. 

Это точно. Там с маской повозиться нужно.

Хотя если числа имеют ограничения - то можно сделать...ну это нужно что бы хозяин темы написал!

Автор: THandle 20.6.2008, 00:30
Мне хватает такого:
Код


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', ',', #8]) then
    Key := #0;
end;

Автор: mr.Anderson 20.6.2008, 00:46
THandle, самый оптимальный вариант, сам всегда такой пользую. smile

Автор: Beltar 20.6.2008, 08:52
А можно полюбопытствовать, что за символ имеет код 8?

Автор: greenpc 20.6.2008, 09:00
Beltar,  Backspace

Автор: pseud 20.6.2008, 09:48
THandlemr.Andersonzoiberg111

1. копипастим любой текст
2. кликаем правой кнопокй мыши в нашем edit
3. жмем "Вставить"
и вставляется все что угодно... плохой едит для ввода чисел...

1. жмем "запятая" "запятая" "запятая" "запятая"  и видим 4 запятые... плохой едит для ввода чисел...
2. жмем "минус" "минус" "минус" "минус"  и видим 4 минуса... плохой едит для ввода чисел...


ИМХО - надо обрабатывать OnChange и анализировать весь текст.
я писал такой компонент и пришлось обрабатывать все
Код

    procedure KeyPress(var Key: Char); override;
    procedure Change; override;
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    procedure DoExit; override;



Автор: Beltar 20.6.2008, 10:40
Кстати, встречаются иногда SpinEdit'ы для вещественных чисел. Можно поискать готовый компонент.

PS Вместо запятой может быть точка. Т. е. логичнее сравнивать вводимый символ с DecimalSeparator.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)