faz o seguinte bem mais fácil: no evento onchange(o dos campos da tabela(de memoria ou fisica) q vc quer q calcule) coloque assim:
If Not PodeCalcular Then Exit; Faz os calculos que precisa... e atualize os campos necessarios Nos procecedimentos q caso vc insira outros campos no grid ou apague, sete PodeCalcular para False e no fim dele True Caso deseje o valor anterior ao q vc alterou no evento o keypress do grid manda variáveis globais armazenar o valor anterior ex: ValorAnterior[0] := dbgrid1Campo1.asstring; ValorAnterior[1] := dbgrid1Campo2.asstring; ValorAnterior[2] := dbgrid1Campo3.asstring; ai eh soh ultilizá-las para fazer calculos no onchage se desejado ok... --- Aline Alves Soares <[EMAIL PROTECTED]> escreveu: --------------------------------- Vê se esse código te ajuda... procedure Tfrm1.GRID(Column: TColumn); begin //campos editáveis da Grid If AnsiUpperCase (GRID.SelectedField.FieldName) = AnsiUpperCase('campo') then begin GRID.Options:=GRID.Options + [dgEditing]; GRID.ReadOnly:=false; end //campos não editáveis da Grid else begin GRID.Options:=GRID.Options - [dgEditing]; GRID.ReadOnly:=true; end; end; procedure Tfrm1.GRIDKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key = 13) or (key = VK_TAB) then begin if Query.State = DSEdit then Query.Post; end; end; procedure Tfrm1.DATASOURCEUpdateData(Sender: TObject); begin if (AnsiUpperCase(GRID.SelectedField.FieldName) = 'valor') and (GRID.SelectedField.AsVariant <> null) then begin Query['valor'] := (Query['valor'] * GRID.SelectedField.AsFloat); end; end; ----- Original Message ----- From: itamar To: [EMAIL PROTECTED] Sent: Friday, November 26, 2004 9:31 AM Subject: Re: [delphi-br] DBGrid coloca no onexit do ultimo campo que ao abandonar o campo o calculo sera feito [EMAIL PROTECTED] Analista de Sistemas itamar roloff ------------------------------------------- ----- Original Message ----- From: "Weber Luvisa" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Friday, November 26, 2004 9:22 AM Subject: [delphi-br] DBGrid Olá amigos, uso o dbgrid em varias aplicações, e estou tendo o seguinte problema. Fasso calculos de valores sempre que o usario precione enter. tipo qdade * preco = Valor total mas tenho uns usuários que não estão dando enter.. eis o ratina de como esta ultimamete. if key = #13 then begin if Grid.selectindex = 0 then begin if TBProdutos.Locate('codigo',TBItensCODIGO.value,[] then begin Produtos := TBProdutosDESCRICAO.Value; Grid.selectindex := 2; end else begin Mensagem('produto não encontrado','Atenção'); Grid.selectindex := 0/ end; end else if Grid.Selectindex = 2 then Vtotal := perco * qdade end; -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: São Paulo Rio de Janeiro Curitiba Porto Alegre Belo Horizonte Brasília ------------------------------------------------------------------------------ Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ b.. Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: function SearchComboBox() { if (document.form_combo.keyword.value.length==0){ alert("Por favor, digite algo."); return false; }else { document.form_combo.action ="http://br.rd.yahoo.com/SIG=12adoq1cv/M=264105.3931087.6562589.1588051/D=brclubs/S=2137111264:HM/EXP=1101582109/A=2361264/R=0/SIG=11uaou2jn/*http://www.bondfaro.com/bondfaro/in/combosearch_in.jsp?sk=11"; } return true;} [input] [input] [input] --------------------------------- Links do Yahoo! Grupos Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. ===== Leandro... [> Mutuka <] _______________________________________________________ Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! http://br.acesso.yahoo.com/ -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html