Ir para conteúdo
Fórum Script Brasil
  • 0

OnEnter e OnExit de um DBEdit


Gabriel Cabral

Pergunta

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 por Gabriel Cabral
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

Então...acabou que deu certo o que eu queria fazer....

coloquei no OnEnter do Preço de Venda

procedure 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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...