Fórum KeyPress no DBGrid (Campo Monetário) #406483
12/08/2011
0
...seguinte pessoAll, to com uma questão aqui q ta quebrando, num form tenho um dbedit que vai ser preenchido com valores monetarios, então no evento onkeypress no dbedit coloquei este codigo:
if not (Key in ['0'..'9',',',#0,#8,#13]) then
begin
Key := #0;
Exit;
end else
begin
if (Pos(',',TDBEdit(Sender).Text) > 0) and (Key = ',') then
begin
Key := #0;
Exit;
end;
end;
Bom até ai blz, mas em outro form vou manipular os registros em um dbgrid e tenho o mesmo campo monetário, tentei adaptar o codigo acima mas não funciona, parece que o q vc digita no dbgrid não vai direto para o field só depois q vc sai do campo.
Tentei pesquisar na net e aqui no forum tbm, tentei alguns código mas não consegui implementar isso.
Bom galera da uma força ai...
Vlws
José Bonna
Curtir tópico
+ 0Posts
13/08/2011
Marco Salles
Gostei + 0
15/08/2011
José Bonna
então, o campo é um numeric(15,2), no fields do clientdataset defini o diplayformat assim #,##0.00.
Gostei + 0
08/09/2011
José Bonna
Gostei + 0
16/09/2011
Carlos Bernardo
Declarar as units Dbgrid, Grids
Código:
procedure DigitaCurrencyGrid(Sender: TObject; var Key: Char);
var
lib: boolean;
Grid : TDbGrid;
Texto : String;
begin
Grid := Sender as TDbGrid;
lib:= true;
if (not(key in['0'..'9', #8])or (key in ['.']) or (key in [',']))then
begin
If key = '.' then
key:=',';
if (key = ',') then
with Grid.Controls[0] as TInPlaceEdit do
begin
Texto := Text;
if (Pos(',',Texto )>0) then
lib := false
else
lib := true;
end;
end;
if (not lib) or (key in ['-']) or (key in ['e','E']) then
begin
MessageBeep(0);
key := #0;
end;
end;
modo de uso no evento keypress do dbgrid:
digitacurrencyGrid(sender,Key);
desta maneira nenhuma das celulas poderá digitar valores diferentes de
valores numericos.
agora se for apenas uma celula q ira usar essa procedure entao no
keypress do dbgrid digite:
Código:
If (TDbGrid(sender).SelectedField.FieldName ='MEUCAMPO') then
digitacurrencyGrid(sender,Key);
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)