DisplayFormat e EditFormat sem DBEdits

Delphi

01/05/2004

Pessoal,

No meu projeto optei por não usar componentes Dbedits que são vinculados a tabelas, queries etc...
Só que o DBEdit fornece 2 propriedades muito boas que são:
DisplayFormat e EditFormat.

Estou tentando fazer os Edits do meu projeto se comportarem igual a um Dbedit com máscara de entrada(Na entrada de dados, o valor já entra formatadinho na máscara escolhida). Caso vcs conhecam algum componente , etc.. , por favor me ajudem, pois sódependo disso.

simulação da entrada do teclado:

0,00 ->estado inicial do edit
1,00 ->1º a entrar
15,00 ->2º a entrar
150,00 ->3º a entrar
1.500,00->4º a entrar (o ponto da máscara entra e o cursor pula 1 pos para a esquerda)

Aí está o problema. O cursor deveria ficar sempre colado do lado esquerdo da vírgula e quando fosse digitado a vírgula, ai sim ele passaria para o lado direito dela. Não consegui fazer de deito nenhum. Por favor me ajudem , uma luz....


A seguir estão os eventos que fiz para a formatação:

procedure TFVenda.EditsKeyPress(Sender: TObject; var Key: Char);
begin
if pos(Key,´0123456789,.´) = 0 then
key := #0;
if Key=13 then
begin
Key:=0;
perform(WM_NEXTDLGCTL,0,0);
end;
//teste para capturar a vírgula
if Key=44 then
MessageDlg(´Vírgula digitada´,mterror,[mbok],0);
end;


procedure TFVenda.Edit5Change(Sender: TObject);
var
Num : integer;
begin
try
Num := Edit5.SelStart;
Edit5.Text := FormatFloat(´,,,0.00´,StrToFloat(Edit5.Text));
Edit5.SelStart := Num;
except
end
end;



Obrigada

[b:4eea52d2f4][color=red:4eea52d2f4]Editado(Beppe): Seja clara nos títulos.[/color:4eea52d2f4][/b:4eea52d2f4]


Angela

Angela

Curtidas 0

Respostas

Beppe

Beppe

01/05/2004

Tenta isso no OnChange:

procedure TFVenda.Edit5Change(Sender: TObject); 
begin 
  try 
    Edit5.Text := FormatFloat(´#,,,0.00´,StrToFloat(Edit5.Text));
    Edit5.SelStart := Length(Edit5.Text) - 3;
  except 
  end ;
end;



GOSTEI 0
Angela

Angela

01/05/2004

Valeu Beppe!!!!


Funcionou direitinho


GOSTEI 0
POSTAR