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

Somatorio Qdo Aperta Enter E Tab


Késsia

Pergunta

Como faco para q quando o usuario apertar a tecla enter ou o tab faca um somatorio e coloque o resultado num edit, por exemplo. Tenho o codigo quando aperto o enter, mas quando aperto o tab, muda de campo, mas não faz o somatorio q preciso. então, vou preenchendo os edit, e quando teclo enter, vai aparecendo o resultado da soma destes edits, num edit8. Para o enter funciona, mas quando aperto tab, ele muda de campo, mas não faz o somatorio.

Este é o codigo q tenho no evento onkeypress dos edits:

EDIT1

if (Key = #13)then

begin

if(Edit1.Text <> '')then

begin

Key := #0;

Perform(WM_NEXTDLGCTL, 0, 0);

soma:= StrToFloat(Edit1.Text);

Edit8.Text:=FloatToStr(soma);

end

else

MessageDlg('Obrigatório Preenchimento do Gasto com Energia Elétrica', mtWarning,

[mbOk], 0);

end

EDIT2

if (Key = #13)then

begin

if(Edit2.Text <> '')then

begin

Key := #0;

Perform(WM_NEXTDLGCTL, 0, 0);

soma:= soma + StrToFloat(Edit2.Text);

Edit8.Text:=FloatToStr(soma);

end

else

MessageDlg('Obrigatório Preenchimento do gasto com Combustível', mtWarning,

[mbOk], 0);

end

T+,

Késsia

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

então, também já fiz isso, e quando aperto tab ou enter ele soma duas vezes, não dando a soma correta.

No evento onexit do edit tenho assim:

EDIT1

//if (Key = #13)then

begin

//soma:=0;

if(Edit1.Text <> '')then

begin

//Key := #0;

//Perform(WM_NEXTDLGCTL, 0, 0);

soma:= StrToFloat(Edit1.Text);

Edit8.Text:=FloatToStr(soma);

end

else

MessageDlg('Obrigatório Preenchimento do Gasto com Energia Elétrica', mtWarning,

[mbOk], 0);

end

EDIT2

//if (Key = #13)then

begin

//soma:=0;

if(Edit2.Text <> '')then

begin

//Key := #0;

//Perform(WM_NEXTDLGCTL, 0, 0);

soma:= soma + StrToFloat(Edit2.Text);

Edit8.Text:=FloatToStr(soma);

end

else

MessageDlg('Obrigatório Preenchimento do gasto com Combustível', mtWarning,

[mbOk], 0);

end

T+,

Késsia

Link para o comentário
Compartilhar em outros sites

  • 0

Quero q quando apertar a tecla enter ou tab faca um somatorio e mostre num edit. Por exemplo, entro com os numeros nos edits:

10

20

30

40

50

e quero q o resultado seja 150.

então quando digito 10 e dou enter, aparece no edit8 o valor 10. quando digito 20 no edit2 e dou enter, aparece no edit8 o somatorio de 10+20=30 e assim por diante.

Assim, q pretendo fazer. já pensei em desabilitar a tecla tab, para apenas o enter funcionar, mas também não deu certo e também já disseram q é melhor deixar as duas teclas funcionando para facilitar para o usuario.

T+,

Késsia

Link para o comentário
Compartilhar em outros sites

  • 0

No evento ONKEYDOWN do de todos os EDITS coloque o seguinte:

if VK_TAB = key then

begin

SEU CÓDIGO AQUI

.

.

.

end;

mas tem que colocar em todos os EDITS e tb seria bom colocar no ONKEYDOWN do form.

Espero ter te ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu queria q o usuario fosse vendo o resultado da soma dos valores q digitasse em tempo real. Por isso é q estou fazendo desse jeito.

Eu sei disso. Acho que me expressei mal.

Ao invés de você acumular um campo chamado soma nos eventos dos Edits, execute uma função que retorne o valor da soma de todos os Edits e jogue no Edit8. O valor será sempre colocado em tempo real e não importa quantas vezes se entre e saia de um Edit que a soma estará sempre correta.

Link para o comentário
Compartilhar em outros sites

  • 0

Ola!!! eu novamente biggrin.gif

Fiz uma funcao para fazer a soma como foi sugerido, e quando teclo tab, faz o somatorio corretamente. O problema é quando aperto a tecla enter, ele chama a funcao duas vezes, uma para o enter e outra para o tab.

Tenho estes dois codigos, um no evento onkeypress de cada edit:

if (Key = #13)then

begin

if(Edit2.Text <> '')then

begin

Key := #0;

Perform(WM_NEXTDLGCTL, 0, 0);

soma1:=StrToFloat(Edit2.Text);

somatorio1:=somatorio(soma,soma1);

Edit8.Text:=FloatToStr(somatorio1);

soma:=somatorio1;

end

else

MessageDlg('Obrigatório Preenchimento do gasto com Combustível', mtWarning,

[mbOk], 0);

ende outro no evento onexit também de cada edit:

if(Edit2.Text <> '')then

begin

soma1:=StrToFloat(Edit2.Text);

somatorio1:=somatorio(soma,soma1);

Edit8.Text:=FloatToStr(somatorio1);

soma:=somatorio1;

end

else

MessageDlg('Obrigatório Preenchimento do gasto com Combustível', mtWarning,

[mbOk], 0);

end

não sei se estou colocando no lugar errado, ou outra coisa. Gosstaria q se alguém tiver uma dica para me ajudar, fico muito agradecida. O q quero é q quando aperto o tab ou o enter, faca um somatorio correto.

T+,

Késsia

Link para o comentário
Compartilhar em outros sites

  • 0

O problema é q quando teclo enter, ele entra no procedimento dos enventos onkeypress e do onexit, somando duas vezes o mesmo valor. Se não fosse isso, estaria fazendo a soma correta. Primeiro estava tentando desabilitar a tecla tab, assim, só o enter funcionaria e apareceria o resultado correto. Depois me falaram que era melhor deixar as duas teclas habilitadas para facilitar para o usuario. Mas estou tendo este problema q ainda não consegui solucionar.

T+,

Késsia

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que você não entendeu.

Não some nada nos eventos, apenas manda executar a função de soma.

Nesta função ou procedure, some Edit1+Edti2+Edit... e jogue o resultado no Edit8.

Não importa quantas vezes os eventos são executados ou quantas vezes a função é executada. A soma sempre estará correta porque ela fará:

Soma := Edit1+Edit2...+Edit7;

Edit8.text := FloatToStr(Soma);

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...