PDA

Ver la Versión Completa : Formato en editbox


Kiranov
22-02-2013, 01:59:28
Buenas tardes, :)

Escribo para ver si alguien me puede ayudar con lo siguiente: Estoy intentando darle formato a la entrada de un editbox, por ejemplo que le pueda dar una mascara de entrada $99999.99 y me acepte la entrada asi como es, con formato numerico. He intentado con el maskedit pero a la hora de hacer una entrada con una mascara, por ejemplo $99999.99, si ingreso $999__.99 me da error de formato.

Espero su ayuda y les agradezco de antemano...

Kiranov
22-02-2013, 02:26:07
Añado: Cuando hago una entrada por ejemplo con una mascara $#####.## al hacer una captura $89___.67 me deja los espacios en el valor, por ejemplo me arroja $89 .67 y me lo toma como carater...

ecfisa
22-02-2013, 03:59:04
Hola Kiranov.

A ver si entendí bien el problema y te sirve de este modo...

procedure TForm1.FormCreate(Sender: TObject);
begin
MaskEdit1.EditMask := '$#####.##';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(StringReplace(MaskEdit1.Text, ' ', '', [rfReplaceAll]));
end;


Saludos.

Kiranov
23-02-2013, 02:26:44
Gracias por tu respuesta ecfisa,

mas bien lo que intento es imitar el control Textbox de VFP, cuando se usan sus propiedades Inputmask. En el caso de ese control, tu le pones una mascara por ejemplo $99999.99, y en tiempo de ejecucion coloca el signo de $ de forma simbolica nada mas, ya que no afecta el tipo de datos y permite la entrada numerica, pero al presionar el "." recorre toda la parte entera de la cantidad y te deja introducir los decimales. Pero todo esto en tiempo de ejecucion.
un ejemplo de esto se muestra en esta imagen: http://www.codemine.com/images/numctl.gif

Gracias!

ecfisa
23-02-2013, 05:03:14
Hola Kiranov.

Cuando mencionabas:

... pero a la hora de hacer una entrada con una mascara, por ejemplo $99999.99, si ingreso $999__.99 me da error de formato.
Tal vez te referías a no obtener errores de conversión mediante StrToFloat por ejemplo. Si fuera así, tal vez te serviría procesar la cadena de este modo:

procedure TForm1.FormCreate(Sender: TObject);
begin
MaskEdit1.EditMask := '$#9999' + DecimalSeparator + '99';
end;

function TrimSpc(Text: string): string;
var
i: Integer;
begin
for i := 1 to Length(Text) do
if Text[i] in ['0'..'9', DecimalSeparator,'-'] then
Result := Result + Text[i]
end;


Llamada ejemplo:

procedure TForm1.MaskEdit1Exit(Sender: TObject);
var
d: Double;
begin
d := StrToFloat(TrimSpc(MaskEdit1.Text));
ShowMessage(FloatToStr(d));
end;


Saludos.