Calcular numeros em delphi
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?
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
Curtidas 0
Respostas
Daniel Santos
28/04/2013
Ajudar nq? voce nao disse o problema!
GOSTEI 0
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
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.
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:
Teste aqui e funcionou tranquilamente, qualquer dúvida posta aí ....
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
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.
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:
Teste aqui e funcionou tranquilamente, qualquer dúvida posta aí ....
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
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
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
28/04/2013
Não vc vai setar o evento "Edit1KeyPress" no Edits, usando o Object Inspector, um por um!!
GOSTEI 0
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
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.
Tenho certeza que deve ser um errinho simples, é só questão de acertar o local do código.
GOSTEI 0
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.
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
28/04/2013
Bom dia,
vc declarou a função na parte de cima de sua unit?
vc declarou a função na parte de cima de sua unit?
function Somar2: Real;
GOSTEI 0