Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.035 c
3-1089955641
Rater
2004-07-16 09:27
2004.08.08
dbf поле длинна 2 тип Numeric. В RunTime создать можно?


1-1090997977
RagE
2004-07-28 10:59
2004.08.08
TCanvas.TextOut


9-1078931622
DenKop
2004-03-10 18:13
2004.08.08
Примитивы opengl


14-1089707695
KosilkA
2004-07-13 12:34
2004.08.08
Вот же гадость! (portal.tetki.ru)


14-1090415669
Dimka Maslov
2004-07-21 17:14
2004.08.08
Degauss





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский