![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В TEdit - одни цифры и ОДНА запятая? [D7, WinXP]
tolstiak © (2005-01-17 16:09:00)Доброго всем, уважаемые!
С первой частью вопроса я справился :)), т.е. в TEdit одни цифры получаються..... но мне необходимо что бы (как в стандартном калькуляторе) блокировалось повторное нажатие "." или ","... как это сделать?
Ega23 (2005-01-17 16:34:00) [41]Еще StringReplace(...DecimalSeparator...) 2 раза
А нафига? Val и так разберётся... :о)
TUser (2005-01-17 16:30:00) [42]
> Ega23 © (17.01.05 16:15) [2,3]
Еще StringReplace(...DecimalSeparator...) 2 раза
Ega23 (2005-01-17 16:15:00) [43]Вру.
var
Code:Integer;
i:Double;
Ega23 (2005-01-17 16:14:00) [44]
procedure TForm1.Edit1Change(Sender: TObject);
var
i,Code:Integer;
begin
Val(Edit1.Text, i, Code);
if Code<>0 then
begin
showMessage('Ошибка в символе №'+IntToStr(Code));
Edit1.SetFocus;
end;
end;
Что-то типа этого...
TUser (2005-01-17 16:13:00) [45]var Edit1Text: string;
procedure FormCreate();
begin
Edit1Text:=Edit1.Text;
end;
procedure Edit1Change();
var i: integer;
r: boolean;
f: boolean;
begin
i:=1; r:=true; f:=false;
while r and (i <= length(Edit1.Text)) do
if Edit1.Text[i] in ['0'..'9'] then
inc (i)
else
if Edit1.Text[i] in ['.',','] and not f then begin
inc (i); f:=true;
end else
r:=false;
if not r then
Edit1.Text:=Edit1Text
else
Edit1Text:=Edit1.Text
end;