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

Вниз

Как сделать маску для ввода только чисел?   Найти похожие ветки 

 
DVP777   (2003-12-03 17:35) [0]

Как сделать маску для ввода только чисел?
Чтобы нельзя было в TMAskEdit ввести что-то вроде:
"0123", "1 122"... ?


 
Семен Сорокин   (2003-12-03 17:36) [1]

самый действенный способ, имхо, обрабатывать onChange


 
хамло   (2003-12-03 17:41) [2]

The ES_NUMBER style (available in version 4.0 or later) restricts input to the edit control to digits only.

то есть, берем обычный TEdit и добавляем к нему стиль ES_NUMBER. метод провереный.


 
TUser   (2003-12-03 17:42) [3]


> обрабатывать onChange

лучше - onKeyPress


 
DVP777   (2003-12-03 17:44) [4]

But how can i add the es_number style?


 
Семен Сорокин   (2003-12-03 17:45) [5]

2TUser
не совсем удобно при вставке из буфера


 
хамло   (2003-12-03 17:50) [6]

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


 
хамло   (2003-12-03 17:54) [7]

но, как говорил Семен Сорокин от вставки текста из буфера это не спасет. ))


 
BlackKing   (2003-12-03 18:15) [8]

Jesli na onChange vikidivat" lishnije simvoli - spasjot ot vstavki iz buffera, a na OnKeyDown rubi musor s klavi.

ili obojdis" odnim onChange.


 
Developerr   (2003-12-03 18:24) [9]

Можно воспользоваться компонентом из RxLibrary RxCalcEdit. Он не позволяет вставлять текст из буфера, только цифры.


 
KosilkA   (2003-12-03 18:27) [10]

лучше всего onchange олавливать

function checkstr(text:string):string;
var i:integer;
s:string;
const d:string="1234567890";
begin
for i:=1 to length(text) do
begin
if (pos(text[i],d)<>0)then
s:=s+text[i];
end;
for i:=1 to length(s) do
begin
if s[1]="0" then //убираем нуль если он первый
system.Delete(s,1,1);
end;
result:=s;
end;


 
Семен Сорокин   (2003-12-03 18:32) [11]

KosilkA © (03.12.03 18:27) [10]
а если число с плав. точкой :))


 
KosilkA   (2003-12-03 18:37) [12]


> Семен Сорокин © (03.12.03 18:32) [11]
> KosilkA © (03.12.03 18:27) [10]
> а если число с плав. точкой :))

тогда const d:string= "1234567890.";
и еще в функции отловить первую точку , а остальные отсечь :-)


 
BlackKing   (2003-12-03 18:51) [13]

ne tochku a DecimalSeparator


 
Семен Сорокин   (2003-12-03 18:57) [14]

можно использовать функции:
StrToIntDef,
TryStrToInt,
StrToFloatDef, (D7)
TryStrrToFloat (D7)


 
Shirson   (2003-12-04 07:17) [15]

А не проще сделать так?


var
Form1: TForm1;
s:string;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
s:="";
end;

procedure TForm1.Edit1Change(Sender: TObject);
var p:integer;
begin
p:=edit1.SelStart-1;
try
strtofloat(edit1.Text)
except
begin
edit1.Text:=s;
edit1.SelStart:=p;
end;
end;
s:=edit1.Text;
end;



 
Clift   (2003-12-04 07:42) [16]

А если хочется помудрить можно вписать проверку поля на наличие в нём строки в обработчик ontimer.interval


 
ghg   (2003-12-04 10:12) [17]

поискать в кладовке
там есть нормальный edit в который можно вводить тока числа


 
DVP777   (2003-12-04 15:39) [18]

Штой-то в кладовке не нашел подходящего. Мож ссылочку бросите



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

Форум: "Основная";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
3-52113
Malefik
2003-11-24 09:29
2003.12.16
SelectSQL, InsertSQL, UpdateSQL ......


1-52234
DeScriptor
2003-12-04 22:12
2003.12.16
Стыкуемые окна


6-52312
mktl
2003-10-16 17:33
2003.12.16
Сеть в консоле


14-52348
ИМХО
2003-11-23 06:28
2003.12.16
Новосибирск: как не заблудиться


1-52229
Piero
2003-12-03 22:53
2003.12.16
Как получить компанент





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский