![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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
а вообще полистай форум, пару дней назад было