Fórum Calcular numeros em delphi #441239

28/04/2013

0

estou usando o seguinte code:


procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin
SelectNext(ActiveControl as TWinControl,True,True);
key:=#0;
end;
end;
procedure TForm1.Edit10Exit(Sender: TObject);
var
A : Real;
B : Real;
C : Real;
D : Real;
E : Real;
F : Real;
G : Real;
H : Real;
I : Real;
J : Real;
L : Real;

begin
A := StrToFloat(Edit1.Text);
B := StrToFloat(Edit2.Text);
C := StrToFloat(Edit3.Text);
D := StrToFloat(Edit4.Text);
E := StrToFloat(Edit5.Text);
F := StrToFloat(Edit6.Text);
G := StrToFloat(Edit7.Text);
H := StrToFloat(Edit8.Text);
I := StrToFloat(Edit9.Text);
J := StrToFloat(Edit10.Text);

L := a + b + c + d + e + f + g + h + I + J;
edit11.Text:= FloatToStr(L);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
KeyPreview:=true;
end;


end.

O meu projeto não tem button, só edits e são 11 edits como postado a cima,

vou explicar:


quando eu vou digitando numeros nos edits, o edit11 que o edt de resultado vai mudando o valor a cada numero que eu digitar nos edits seja soma ou subtração.


OBS: este projeto meu, é de calculos de pontuação de ficha de funcionarios publico para promoção. Todo final de ano eu faço a contagem dos pontos das fichas dos funcionários e essas fichas são preenchidas por notas especifica de cada area. Tem pontuações negativas e positivas,aí o que tiver a maior nota dentro das positivas e negativas, será promovido.

Alguem pode me ajudar?



Paulo

Paulo

Responder

Posts

29/04/2013

Daniel Santos

Ajudar nq? voce nao disse o problema!
Responder

Gostei + 0

29/04/2013

Paulo

Ajudar nq? voce nao disse o problema!



vou explicar:

Eu gostaria que no meu projeto ficasse assim:

quando eu vou digitando numeros nos edits, o edit11, que é o edit onde sai o resultado, vai mudando o valor a cada numero que eu digitar nos edits seja soma ou subtração.

com os codigos que eu postei acima, os numeros só aparecem quando eu chego no ultimo edit. Entendeu?
Responder

Gostei + 0

29/04/2013

William

Colega é o seguinte, escrevi uma função simples para executar um loop entre os TEdits e conforme atender
as condições vai somando o valor de cada um dos 11 edits, ela só não captura o conteúdo
do TEdit com name de 'edtResultado' que obviamente vai receber o resultado da soma.

function TForm1.Somar2: Real;
var
  i: Integer;
  total: Real;
begin
    total := 0;
    for i := 0 to ComponentCount -1 do
    begin
        if Components[i] is TEdit then
           if (TEdit(Components[i]).Text <> '') and (TEdit(Components[i]).Name <> 'edtResultado')  then
              total := total + StrToFloat(TEdit(Components[i]).Text);
    end;

    Result := total;
end;


Mas para complementar adicionei ao evento OnKeyPress do Edit1 o seguinte código para disparar a
função Somar2 e avançar para o próximo edit. Depois disso é só setar esse mesmo evento para os outros edits através da
aba Events do Object Inspector:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if Key = #13 then
     begin
        edtResultado.Text := FloatToStr(Somar2());
        SelectNext(ActiveControl as TWinControl,True,True);
     end;
end;


Teste aqui e funcionou tranquilamente, qualquer dúvida posta aí ....
Responder

Gostei + 0

29/04/2013

Paulo

Colega é o seguinte, escrevi uma função simples para executar um loop entre os TEdits e conforme atender
as condições vai somando o valor de cada um dos 11 edits, ela só não captura o conteúdo
do TEdit com name de 'edtResultado' que obviamente vai receber o resultado da soma.

function TForm1.Somar2: Real;
var
  i: Integer;
  total: Real;
begin
    total := 0;
    for i := 0 to ComponentCount -1 do
    begin
        if Components[i] is TEdit then
           if (TEdit(Components[i]).Text <> '') and (TEdit(Components[i]).Name <> 'edtResultado')  then
              total := total + StrToFloat(TEdit(Components[i]).Text);
    end;

    Result := total;
end;


Mas para complementar adicionei ao evento OnKeyPress do Edit1 o seguinte código para disparar a
função Somar2 e avançar para o próximo edit. Depois disso é só setar esse mesmo evento para os outros edits através da
aba Events do Object Inspector:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if Key = #13 then
     begin
        edtResultado.Text := FloatToStr(Somar2());
        SelectNext(ActiveControl as TWinControl,True,True);
     end;
end;


Teste aqui e funcionou tranquilamente, qualquer dúvida posta aí ....




O codigo da função vai onde? no onclik do form?
Responder

Gostei + 0

29/04/2013

William

São 11 edits segundo vc mencionou acima, então vc vai setar no evento OnKeyPress de cada um dos TEdits essa procedure que está no Edit1.
Responder

Gostei + 0

29/04/2013

Paulo

São 11 edits segundo vc mencionou acima, então vc vai setar no evento OnKeyPress de cada um dos TEdits essa procedure que está no Edit1.



E o código da função?
Responder

Gostei + 0

29/04/2013

William

Não vc vai setar o evento "Edit1KeyPress" no Edits, usando o Object Inspector, um por um!!
Responder

Gostei + 0

29/04/2013

Paulo

Não vc vai setar o evento "Edit1KeyPress" no Edits, usando o Object Inspector, um por um!!




deu o seguinte erro:

[Error] UPrincipal.pas(45): Undeclared identifier: 'Somar2'
[Error] UPrincipal.pas(54): Undeclared identifier: 'ComponentCount'
[Error] UPrincipal.pas(57): Undeclared identifier: 'Components'
[Error] UPrincipal.pas(57): Operator not applicable to this operand type
[Error] UPrincipal.pas(62): Undeclared identifier: 'Result'
[Error] UPrincipal.pas(70): Undeclared identifier: 'Somar2'
[Error] UPrincipal.pas(79): Undeclared identifier: 'Somar2'
[Error] UPrincipal.pas(87): Undeclared identifier: 'Somar2'
[Error] UPrincipal.pas(95): Undeclared identifier: 'Somar2'
[Error] UPrincipal.pas(103): Undeclared identifier: 'Somar2'
[Error] UPrincipal.pas(111): Undeclared identifier: 'Somar2'
[Error] UPrincipal.pas(119): Undeclared identifier: 'Somar2'
[Error] UPrincipal.pas(127): Undeclared identifier: 'Somar2'
[Error] UPrincipal.pas(135): Undeclared identifier: 'Somar2'
[Error] UPrincipal.pas(143): Undeclared identifier: 'Somar2'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'UPrincipal.pas'
Responder

Gostei + 0

29/04/2013

William

Colega se você tiver skype me adicione willfl2, assim fica mais fácil de ajudar você.

Tenho certeza que deve ser um errinho simples, é só questão de acertar o local do código.
Responder

Gostei + 0

30/04/2013

Paulo

Colega se você tiver skype me adicione willfl2, assim fica mais fácil de ajudar você.

Tenho certeza que deve ser um errinho simples, é só questão de acertar o local do código.



não tenho skype, mais agradeço a atenção.
Responder

Gostei + 0

30/04/2013

Felipe Passos

Bom dia,
vc declarou a função na parte de cima de sua unit?
function Somar2: Real;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar