Gabriel Cabral Postado Julho 17, 2008 Denunciar Share Postado Julho 17, 2008 (editado) Olá pessoal...é o seguinte...estou com dificuldades aqui para utilizar o evento OnExit e o OnEnter de um DBEdit...assim...tenho tres DBEdit vinculados a uma tabela...e no cadastro, o..txtCadPro_PreCus.Text recebe o valor do Preço de Custo;txtCadPro_Vml.Text recebe o valor do Lucro;txtCadPro_PreVen.Text recebe o valor do Preço de Venda.Para calcular o Preço de venda com base no Preço de custo e no VML, eu coloquei no OnExit do txtCadPro_Vml o seguinte código:procedure TfrmCadPro.txtCadPro_VmlExit(Sender: TObject); var precus, vml: real; begin precus := StrToFloat(txtCadPro_PreCus.Text); vml := StrToFloat(txtCadPro_Vml.Text); txtCadPro_PreVen.Text := FloatToStr(precus+((precus*vml)/100)); end;Mas quando este DBEdit perde o foco, nada aparece no outro DBEdit...resolvi então fazer um teste...Troquei o DBEdit que recebia o resultado do Preço de venda por um Edit normal....e dessa vez funcionou....o resultado apareceu no Edit normal....Qual pode ser o problema??....o que devo fazer pra resolvê-lo??Muito Obrigado Editado Julho 17, 2008 por Gabriel Cabral Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vivendo&Aprendendo Postado Julho 17, 2008 Denunciar Share Postado Julho 17, 2008 Qual banco você usa e qual componente de conexão com o banco está usando? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Julho 17, 2008 Autor Denunciar Share Postado Julho 17, 2008 Qual banco você usa e qual componente de conexão com o banco está usando?Estou usando tabelas .dbf, pois estou começando a migrar de Clipper para Delphi...Estou utilizando BDE. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vivendo&Aprendendo Postado Julho 17, 2008 Denunciar Share Postado Julho 17, 2008 Olha eu uso os componentes ADO, não sei se com os do BDE da certo mas creio que sim... no lugar de fazer assim:procedure TfrmCadPro.txtCadPro_VmlExit(Sender: TObject); var precus, vml: real; begin precus := StrToFloat(txtCadPro_PreCus.Text); vml := StrToFloat(txtCadPro_Vml.Text); txtCadPro_PreVen.Text := FloatToStr(precus+((precus*vml)/100)); end; Faça assim: procedure TfrmCadPro.txtCadPro_VmlExit(Sender: TObject); var precus, vml: real; begin precus := StrToFloat(txtCadPro_PreCus.Text); vml := StrToFloat(txtCadPro_Vml.Text); TABELA.FieldByName('PrecoVenda').Value := (TABELA.FieldByName('PrecoCusto').Value + (TABELA.FieldByName('PrecoCusto').Value * TABELA.FieldByName('ValorLucro').Value) / 100); end;Acredito que assim resolva.Coloque isso no OnExit do Preço do Lucro.Abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Julho 17, 2008 Autor Denunciar Share Postado Julho 17, 2008 Então...acabou que deu certo o que eu queria fazer....coloquei no OnEnter do Preço de Vendaprocedure TfrmCadPro.txtCadPro_PreVenEnter(Sender: TObject); var precus, vml: real; begin precus := StrToFloat(txtCadPro_PreCus.Text); vml := StrToFloat(txtCadPro_Vml.Text); txtCadPro_PreVen.Text := FloatToStr(precus+((precus*vml)/100)); end; E depois tem a conta inversa...obtendo o lucro [vml].......caso se altere o preço de venda.....que coloquei no OnEnter de um DBEdit que vem depois do DBEdit do preço de venda... procedure TfrmCadPro.txtCadPro_CodForn1Enter(Sender: TObject); var precus, preven: real; begin precus := StrToFloat(txtCadPro_PreCus.Text); preven := StrToFloat(txtCadPro_PreVen.Text); txtCadPro_Vml.Text := FloatToStr(((preven-precus)*100/precus)); txtCadPro_Vml.Text := FormatFloat('#,###,##0.000',StrToFloat(txtCadPro_Vml.Text)); end;Percebam que formatei o vml para aparecer com 3 casas decimais.....mas ele arredonda..exemplo....o preço de custo é 1,000.....o vml é 56,780.....resultando no preço de venda 1,567....então se eu tiro o foco do preço de venda, este se torna 1,57 e o vml se torna 57....preciso q o vml continue 56,780 e o preço de venda 1,56. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Duduh_Capixaba Postado Julho 17, 2008 Denunciar Share Postado Julho 17, 2008 (editado) O problema das casas decimais não estaria na construção da sua base de dados?! Veja como seu banco armazena estes números com três casas, pois sua formatação está correta. Editado Julho 17, 2008 por Duduh_Capixaba Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Gabriel Cabral
Olá pessoal...
é o seguinte...
estou com dificuldades aqui para utilizar o evento OnExit e o OnEnter de um DBEdit...
assim...
tenho tres DBEdit vinculados a uma tabela...e no cadastro, o..
txtCadPro_PreCus.Text recebe o valor do Preço de Custo;
txtCadPro_Vml.Text recebe o valor do Lucro;
txtCadPro_PreVen.Text recebe o valor do Preço de Venda.
Para calcular o Preço de venda com base no Preço de custo e no VML, eu coloquei no OnExit do txtCadPro_Vml o seguinte código:
Mas quando este DBEdit perde o foco, nada aparece no outro DBEdit...
resolvi então fazer um teste...
Troquei o DBEdit que recebia o resultado do Preço de venda por um Edit normal....e dessa vez funcionou....o resultado apareceu no Edit normal....
Qual pode ser o problema??....o que devo fazer pra resolvê-lo??
Muito Obrigado
Editado por Gabriel CabralLink para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.