como auto formatar 45000 para 45.000

Delphi

21/09/2005

galera é o seguinte preciso que quando o usuário digitar 450 ele já reconheça e coloque o ponto 4.50 ex:

450 = 4.50
4500 = 4.500
450000 = 45.000

pois vou tratar tudo em toneladas. ai ele não vai usar casas depois da , mais c alguem tivar alguma coisa completa eu já coloco no sistema todo..

Grato


Marcos Fernando

Marcos Fernando

Curtidas 0

Respostas

Nandolh

Nandolh

21/09/2005

Utilize DisplayFormat dos Campos Float do seu ClientDataSet

#,0


GOSTEI 0
Marcos Fernando

Marcos Fernando

21/09/2005

Ok, mais preciso que format de acordo com a digitaçao.

e o display format não me fornece essa opação em edição


preciso que ele auto formate tipo no onchange e não no onexit

Grato


GOSTEI 0
Gameiro

Gameiro

21/09/2005

Não lembro onde peguei essa função ve se te server
unit u_teste;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Maskutils;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure Edit1Change(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
  Function FormatarBanco(Valor:String; Quant:Integer):String;
var
  Form1: TForm1;
  v1,v2:string;
implementation

{$R *.dfm}
Function FormatarBanco(Valor:String; Quant:Integer):String;
begin
   case Length(Valor) of
      0:result:=´´;
      1:result:=´0,0´+Valor;
      2:result:=´0,´+Valor;
      3:result:=FormatMaskText(´0,00;0´, Valor);
      4:result:=FormatMaskText(´00,00;0´, Valor);
      5:result:=FormatMaskText(´000,00;0´, Valor);
      6:result:=FormatMaskText(´0.000,00;0´, Valor);
      7:result:=FormatMaskText(´00.000,00;0´, Valor);
      8:result:=FormatMaskText(´000.000,00;0´, Valor);
   end;
end;



procedure TForm1.Edit1Change(Sender: TObject);
begin
  v2:=v1; 
  Edit1.text:=FormatarBanco(v2, Length(v2)); 
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=vk_delete then 
      Begin 
         Edit1.clear; 
         v1:=´´; 
      end; 

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  v1:= v1 + key; 

end;

end.




ate mais. :)


GOSTEI 0
Amjorge

Amjorge

21/09/2005

Não sei se entendi direito mas já tenteu usar o companente MaskEdit ? É um Edit com a máscara que vc. define. Um abraço.


GOSTEI 0
Marco Salles

Marco Salles

21/09/2005

[b:75b1f4a5d5]Vale a pena testar [/b:75b1f4a5d5]


procedure TForm1.Edit1Change(Sender: TObject);
var
vf:String;
posicao,tamanho:integer;
begin
vf:=edit1.text;
 posicao:=pos(´.´,vf);
 if posicao > 0 then
   delete(vf,posicao,1);
 tamanho:=length(vf);
 if tamanho <= 3 then
  vf:=´.´+vf
 else
 begin
    posicao:=length(vf)-3;
    vf:=copy(vf,1,posicao)+´.´+copy(vf,posicao+1,3);
 end;
edit1.OnChange:=nil;
edit1.text:=vf;
edit1.OnChange:=edit1Change;
edit1.SelStart:=length(edit1.text);
end;

procedure TForm1.Edit1Click(Sender: TObject);
begin
edit1.SelStart:=length(edit1.text);
end;


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if edit1.SelStart < length(edit1.text) then
  key:=#0;
end;


procedure TForm1.Edit1Enter(Sender: TObject);
begin
edit1.selstart:=length(edit1.text);
end;


No objecto inspector do edit1 coloque a propreidade text = ´.´



GOSTEI 0
Marcos Fernando

Marcos Fernando

21/09/2005

Acabeu usando o RXCALC ele tem a opção de auto formatação mui bom do jeito que eu queria, e eu testei umas dicas tambem deram BLZ

Grato


GOSTEI 0
POSTAR