Hola. Necesito filtrar la entrada de datos en una apk. Quisiera con una mascara determinar que tipo de datos se permite captar. En este control pretendo captar numeros enteros, reales o cadenas de acuerdo a lo que necesite y que vendria determinado como ya decia por la mascara. En FMX no existe ningun TEdit "enmascarado" como TMaskedEdit pero se puede utilizar algunas funciones de la unit MaskUtils.pas.
Sin embargo, esa mascara del tipo "#990.00;1;_" me permite cosas como "1__.34", no me sirve bien para los numeros reales. He encontrado unos ejemplos en internet para el evento OnChange y de ahi he tratado de usar este fragmento:
Código Delphi
[-]procedure TForm3.Edit1Change(Sender: TObject);
Const AllowedFormat = '00.00'; var I : Integer;
P: PChar;
begin
if Length(TEdit(Sender).Text) > Length(AllowedFormat) then
begin
TEdit(Sender).Undo;
Exit;
end;
P := PChar(TEdit(Sender).Text);
I := 1;
while P^ <> #0 do
begin
if AllowedFormat[i] = 'A' then
begin
if not (P^ in ['A'..'Z']) then
begin
TEdit(Sender).Undo;
Beep; Exit;
end;
end else if AllowedFormat[i] = '0' then
begin
if not (P^ in ['0'..'9']) then
begin
TEdit(Sender).Undo;
Beep; Exit;
end;
end else if AllowedFormat[i] <> Char(P^) then
begin
TEdit(Sender).Undo;
Beep; Exit;
end;
Inc(P);
Inc(I);
end;
TEdit(Sender).ClearUndo;
end;
Funciona bien en VCL, pero en FMX da error pues no existen los metodos Undo ni ClearUndo y no logro sustituirlos por ninguno de los que veo en la ayuda. ¿ Alguien ha pasado por esto ? ¿ O tal vez conocen otra forma mejor de lograr lo mismo ?
Muchas gracias
lmir