Calcular numeros em delphi

Delphi

28/04/2013

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

Curtidas 0

Respostas

Daniel Santos

Daniel Santos

28/04/2013

Ajudar nq? voce nao disse o problema!
GOSTEI 0
Paulo

Paulo

28/04/2013

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?
GOSTEI 0
William

William

28/04/2013

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í ....
GOSTEI 0
Paulo

Paulo

28/04/2013

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?
GOSTEI 0
William

William

28/04/2013

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.
GOSTEI 0
Paulo

Paulo

28/04/2013

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?
GOSTEI 0
William

William

28/04/2013

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

Paulo

28/04/2013

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'
GOSTEI 0
William

William

28/04/2013

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.
GOSTEI 0
Paulo

Paulo

28/04/2013

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.
GOSTEI 0
Felipe Passos

Felipe Passos

28/04/2013

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