Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Puntos (https://www.clubdelphi.com/foros/showthread.php?t=14526)

Carlex 23-09-2004 05:56:33

Puntos
 
Hola mi duda es la siguiente como puedo lograr q al escribir se añada el punto decimal automaticamente, como de los cajeros automaticos, es decir q este el numero asi 0.00, presione un numero y este asi: 0.01, luego 0.10, 1.00 y finalmente 10.00 de acuerdo vaya ingresando los ceros u otros numeros. Espero q se entienda Gracias:cool:

yusnerqui 23-09-2004 14:05:51

Algo para empezar
 
Este código básicamente hace lo que deseas, al menos tiene el comportamiento que indicas.
Código Delphi [-]
//El edit tiene en la propiedad text del Object Inspector "0.00"
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
 var  A: Char;
      Tex : String;
begin
  A := Key;
  Key := #0;
  Tex := TEdit(Sender).Text;
  if  (A in [#47 .. #58,#8]) then
  begin
    if TEdit(Sender).tag <3 then
    begin
      Tex[1]:=Tex[3];
      Tex[3]:=Tex[4];
      Tex[4]:=A;
    end else
    insert(A,Tex,pos('.',Tex));
    TEdit(Sender).Text := Tex;
    TEdit(Sender).tag := TEdit(Sender).tag+1;
  end;
end;
Aquí el mayor problema que veo es a la hora de borrar caracteres , claro que supongo que debe haber ya un componente para estos fines, pero por ahora tienes algo para empezar.
Lamento no poderte ayudar con algo mejor.

Un saludo


yusnerqui 23-09-2004 14:44:09

Más completo
 
Bueno pues este ya borra caracteres.

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
 var  A: Char;
      Tex : String;
      I : Shortint;
begin
  A := Key;
  Key := #0;
  Tex := TEdit(Sender).Text;
  Case A of
   #47 .. #58:begin
                  if TEdit(Sender).tag <3 then
                  begin
                    Tex[1]:=Tex[3];
                    Tex[3]:=Tex[4];
                    Tex[4]:=A;
                  end else
                  insert(A,Tex,pos('.',Tex));
                  I:=1;
               end;
    #8:        begin
                  if TEdit(Sender).tag <=3 then
                  begin
                    if A = #8 then A := '0';
                    Tex[4]:=Tex[3];
                    Tex[3]:=Tex[1];
                    Tex[1]:='0';
                  end else
                  Delete(Tex,pos('.',Tex)-1,1);
                  I := -1;
                 end;
   end;
    TEdit(Sender).Text := Tex;
    TEdit(Sender).tag := TEdit(Sender).tag+I;
    if TEdit(Sender).tag <0 then TEdit(Sender).tag :=0;
end;

Espero te sirva.

Un saludo



La franja horaria es GMT +2. Ahora son las 08:36:52.

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