Форум: "Основная";
Текущий архив: 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