DisplayFormat e EditFormat sem DBEdits
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]
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
Curtidas 0
Respostas
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
01/05/2004
Valeu Beppe!!!!
Funcionou direitinho
Funcionou direitinho
GOSTEI 0