Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TEdit: разрешить ввод только чисел.


V l a d i m i r ©   (2004-07-24 17:57:00) 

Уважаемые мастера, каким образом можно "заставить" пользователя вводить в поле Edit окна редактирования только числа?


Gero   (2004-07-28 09:42:00) [1]


nikkie ©   (28.07.04 02:12)
> а копирайт где? :)

Sorry. Конечно же,
[5] - Copyright (c) by DMClient team.

Так лучше? ;)


GanibalLector   (2004-07-28 02:49:00) [2]

Piter ©   (28.07.04 02:28) [17]
да? Может еще хук поставишь на Ctrl+V и Ctrl+INS ?
Тебе не кажется что проще все таки правильно сделать? :)

Скажу честно...как-то не задумывался о этом и делал по своему.С сегоднешнего дня буду делать по твоему.Так-то оно и правильней будет.


nikkie   (2004-07-28 02:43:00) [3]

>что, из DMClient'а? :)
а то ж... хотя сейчас раскритикуют: точку-запятую нельзя вводить, не говоря уж про экспоненту. :)


Piter   (2004-07-28 02:28:00) [4]

GanibalLector ©   (28.07.04 1:40) [15]
Дык...можно поставить пустой popup и намана.Правая кнопка не позволит сделать твое Paste


да? Может еще хук поставишь на Ctrl+V и Ctrl+INS ?
Тебе не кажется что проще все таки правильно сделать? :)

nikkie ©   (28.07.04 2:12) [16]
а копирайт где? :)


что, из DMClient'а? :)


nikkie   (2004-07-28 02:12:00) [5]

>Gero
а копирайт где? :)


GanibalLector   (2004-07-28 01:40:00) [6]

2 Piter
>Все способы, основанные на проверке вводимого символа, неверны. Вы забываете о Paste при котором естественно не срабатывает OnKey

Дык...можно поставить пустой popup и намана.Правая кнопка не позволит сделать твое Paste


Кириешки   (2004-07-28 01:12:00) [7]

>AndrewVolkov ©   (28.07.04 01:08) [13]

В MaskEdit?


AndrewVolkov   (2004-07-28 01:08:00) [8]

то Кириешки
а если ты захочешь использовать еще какие-нибудь символы, не только цифры?


Piter   (2004-07-28 00:58:00) [9]

Все способы, основанные на проверке вводимого символа, неверны. Вы забываете о Paste при котором естественно не срабатывает OnKey. Надо обрабатывать Change, где проверять все символы в Edit'е.


Кириешки   (2004-07-27 23:46:00) [10]

>AndrewVolkov ©   (27.07.04 23:13) [10]
"А маск едит помойму геморройнее использовать"

А в чем заключаются трудности по использованию MaskEdit?

Там как раз не надо никакого кода писать для того чтобы вводить только цифры - там есть специальное свойство - EditMask. Вводишь туды нулики, и на тебе - только цифры и принимает. Мне кажется наоборот он лучше, тем более что пользователю "по барабану" Edit это или MaskEdit, главное что только цифры влезают.


AndrewVolkov   (2004-07-27 23:13:00) [11]

точнее

 if (key in [ #8,#37..#40,#48..#57])
    then
 else key:=#0

А маск едит помойму геморройнее использовать


AndrewVolkov   (2004-07-27 23:10:00) [12]

procedure TForm.OnKeyPress(Sender: TObject; var Key: Char);
begin
 if (key in [ #48..#57]) or (key in [ #37..#40]) or (key=#8)
    then
 else key:=#0
end;


Petr V.Abramov   (2004-07-27 21:39:00) [13]

А проще взять TMaskEdit и не мучаться


Андрей Сенченко   (2004-07-27 20:48:00) [14]

Бином Ньютоныч   (24.07.04 18:47) [6]

1. Не претендовал на правильность ответа
2. Несколько фривольно поступил с интерпретацией вопроса, но что-то мне смутно подсказывает, что именно цифры и имелись в виду.
3. Мой ответ по-любому не дописан, в нем нет никакого действия при возникновении собственно ситуации ввода НЕцифры. Зато метод есть и точка проверки есть. Имеющий глаза - увидит. И напишет то, что считает нужным для себя если именно предложенный мной метод покажется ему подходящим.

Ку безусловно. Как не ку то ?


Бином Ньютоныч   (2004-07-24 18:47:00) [15]

>Андрей Сенченко ©   (24.07.04 18:14) [2]

ЧИСЛА могут включать знаки +, -, (./,), 'экспоненциальную форму.
Ку?


Gero   (2004-07-24 18:47:00) [16]

SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);


GanibalLector   (2004-07-24 18:41:00) [17]

А я так :


var old1:string;
...
procedure TForm1.Edit1Change(Sender: TObject);
begin
if edit1.text<>'' then
try
strtoint(edit1.text);
old1:=edit1.text;
except
edit1.text:=old1;
edit1.SelStart:=length(edit1.text);
edit1.seltext:='';
end;end;


Zlod3y   (2004-07-24 18:38:00) [18]

а я так:
вариант для целых и неотрицательных чисел
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9':;
#8:;
else Key:=#0;
end;
end;


Андрей Сенченко   (2004-07-24 18:14:00) [19]

Не факт, что самый изящный вариант, но я делал так

procedure TFmMain.EditKeyPress(Sender: TObject; var Key: Char);
begin
 if strtointdef(key,-1) < 0 then // ввели не цифру
end;


Zlod3y   (2004-07-24 18:11:00) [20]

используй MaskEdit
а вообще полистай форум, пару дней назад было


Наверх

Титульная страница Поиск, карта сайта Написать письмо