Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Formato en editbox (https://www.clubdelphi.com/foros/showthread.php?t=82315)

Kiranov 22-02-2013 01:59:28

Formato en editbox
 
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...
Código Delphi [-]
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:
Cita:

Empezado por Kiranov (Mensaje 455396)
... 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:
Código Delphi [-]
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:
Código Delphi [-]
procedure TForm1.MaskEdit1Exit(Sender: TObject);
var
  d: Double;
begin
  d := StrToFloat(TrimSpc(MaskEdit1.Text));
  ShowMessage(FloatToStr(d));
end;

Saludos.


La franja horaria es GMT +2. Ahora son las 07:51:30.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi