Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.08;
Скачать: CL | DM;

Вниз

TEdit: разрешить ввод только чисел.   Найти похожие ветки 

 
V l a d i m i r   (2004-07-24 17:57) [0]

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


 
Zlod3y ©   (2004-07-24 18:11) [1]

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


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

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

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


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

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


 
GanibalLector ©   (2004-07-24 18:41) [4]

А я так :


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;


 
Gero ©   (2004-07-24 18:47) [5]

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


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

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

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


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

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

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

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


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

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


 
AndrewVolkov ©   (2004-07-27 23:10) [9]

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;


 
AndrewVolkov ©   (2004-07-27 23:13) [10]

точнее

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

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


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

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

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

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


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

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


 
AndrewVolkov ©   (2004-07-28 01:08) [13]

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


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

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

В MaskEdit?


 
GanibalLector ©   (2004-07-28 01:40) [15]

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

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


 
nikkie ©   (2004-07-28 02:12) [16]

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


 
Piter ©   (2004-07-28 02:28) [17]

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:43) [18]

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


 
GanibalLector ©   (2004-07-28 02:49) [19]

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

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


 
Gero ©   (2004-07-28 09:42) [20]


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

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

Так лучше? ;)



Страницы: 1 вся ветка

Текущий архив: 2004.08.08;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.038 c
1-1090216972
Michael
2004-07-19 10:02
2004.08.08
Отследить вращение колесика мыши в мышки вне приложения


1-1090895290
Phoenix
2004-07-27 06:28
2004.08.08
Выпадающее меню в DBGridEh


6-1086609132
Николай
2004-06-07 15:52
2004.08.08
Как написать прогу для получения писем с сервера?


1-1090426437
Ven
2004-07-21 20:13
2004.08.08
Проверка файлов в дирректории


9-1082132972
Xerx
2004-04-16 20:29
2004.08.08
IDirectDrawSurface7 и цветовой ключ