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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
1-52205
lightix
2003-12-05 11:41
2003.12.16
RichEdit или QRepRichText - как добавить разрыв страницы?


1-52159
Anton.
2003-12-03 13:36
2003.12.16
Вопрос про меню


1-52189
Anton.
2003-12-03 12:50
2003.12.16
Как можно избавится от перебора?


3-52056
oss
2003-11-25 14:08
2003.12.16
экспорт в Excel


6-52323
Ellika
2003-09-12 08:17
2003.12.16
Компонент IdSMTP