Каталог статей Delphi Report
Проверка ввода числовых данных в строковую переменную. (Tedit. TStringGrid)
Для TEdit можно воспользоваться обработчиком событий OnChange. В следующем коде идет проверка на ввод числа, при этом если будет введен некорректный символ, то программа его исправит и поставит курсор в необходимое место.
TForm2.Edit16Change(Sender: TObject); var F:real; S:string; begin S:=trim((Sender as TEdit).Text); if (S='') then exit; if (S[length(S)]=',') or (S[length(S)]='.') then begin S[length(S)]:=DecimalSeparator; (Sender as TEdit).Text:=S; (Sender as TEdit).SelStart:=Length(S); end; try F:=StrToFloat(S); except
Delete(S,length(S),1);
(Sender as TEdit).Text:=S;
(Sender as TEdit).SelStart:=Length(S);
end; Можно так же воспользоваться val.
Для stringgrid можно попробовать он событием onGetEditMask
procedure TForm14.StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Integer; var Value: String); begin
Value := '!099.99;1;_';
end;
или .....
function CheckNumStr(var S:string):boolean; var F:real; begin S:=trim(S); if (S='') then exit; if (S[length(S)]=',') or (S[length(S)]='.') then begin S[length(S)]:=DecimalSeparator;
end; try F:=StrToFloat(S); if (S[length(S)]='e') or (S[length(S)]='E') then begin Delete(S,length(S),1);
end; result:=true; except Delete(S,length(S),1); result:=false; end; end;
procedure TForm14.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String); var S:string; begin S:=value; CheckNumStr(S); StringGrid1.Cells[acol,arow]:=s; SetCaretPosition(StringGrid1,Acol,Arow,Length(S)); end;
Более подробно про позиционирование смотрите в SetCaretPosition.
|
Категория: Внешний вид программы | Добавил: delphi (14.04.2010)
|
Просмотров: 6004
| Рейтинг: 0.0/0 |
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
|
Google
|