Fórum Tem como calcular valores dentro de um edit? #289146
22/07/2005
0
if StrToInt(edit2.text) = 1 then
begin
query1.Edit;
query1valor.value:=form3.Table2salario.value/30*strtoint(dbedit5.text);
query1.post;
bitbtn2.setfocus;
end;
if StrToInt(edit2.text) = 3 then
begin
query1.Edit;
query1valor.value:=form3.Table2salario.value/220*strtoint(dbedit5.text);
query1.post;
bitbtn2.setfocus;
end;
Notem que o codigo = 1 tem uma formula de calculo e o codigo = 3 tem outra formula de calculo, sera que nao da pra ajuntar essas formulas de calculos dentro de um edit usando os operadores? Ficaria mais pratico e nao precisaria fazer um monte de formula dentro de um unit.pas
Digamos que eu inclua um codigo = 4 Horas Extras 50¬
a formula seria essa dentro de um edit (salario)/220*1.5*(quant)
(salario) = form3.table2salario.value
(quant) = dbedit5.text // que seria a quantidade de horas
Alguem tem alguma ideia como, ou se tem jeito de fazer isso?
Agradeço pela ajuda de todos
Obridado
Adriano.
Adriano_servitec
Curtir tópico
+ 0Posts
22/07/2005
Rjun
Query1.Edit; Query1.FieldByName(´Valor´).Value := ValorCalculado(Edit2.Text); Query1.Post;
Gostei + 0
22/07/2005
Adriano_servitec
Código:
Query1.Edit;
Query1.FieldByName(´Valor´).Value := ValorCalculado(Edit2.Text);
Query1.Post;
Tenho que criar um banco de dados para gravar o que esta no edit?
tipo codigo, descricao, formula, o codigo seria o codigo que eu criar, descricao seria tipo salario mensal e formula seria valor calculado?
Poxa nao consegui entender amigo
Gostei + 0
22/07/2005
Rjun
function ValorCalculado(Codigo: string): double; begin result := 0; if Codigo = ´1´ then result := form3.Table2salario.value / 30 * strtoint(dbedit5.text); else if Codigo = ´2´ then result := form3.Table2salario.value / 220 * strtoint(dbedit5.text); end;
Essa função pode ser melhorada. Foi só pra te dar uma ideia.
Gostei + 0
22/07/2005
Adriano_servitec
function ValorCalculado(Codigo: string): double;
begin
result := 0;
if Codigo = ´1´ then
result := form3.Table2salario.value / 30 * strtoint(dbedit5.text);
else if Codigo = ´2´ then
result := form3.Table2salario.value / 220 * strtoint(dbedit5.text);
else if Codigo = ´3´ then
result := form3.Table2salario.value / 220 *1.5/100;
else if Codigo = ´4´ then
result := form3.Table2salario.value / 220 * 2.0/100;
end;
Minha ideia eh quando incluir um codigo dentro de um form tenha um edit aode possa escrever esse formula que esta dentro da unit.pas
entao o result seria o que tem dentro da edit.text do form
Gostei + 0
22/07/2005
Daemon
procedure TfrmPrin.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); const Validos = [1,3]; //Tipos que vão ser aceitos.. var iTemp:Integer; function RetornaValor(Tipo:Integer):Extended; begin case Tipo of 1: result := form3.Table2salario.value/30*strtoint(dbedit5.text); 3: result := form3.Table2salario.value/220*strtoint(dbedit5.text); //Se aparecer um outro tipo, inclua aqui else result := 0; end; end; begin if key = Vk_Return then begin if (Sender is TEdit) then begin iTemp := StrToInt((Sender as TEdit).Text); if iTemp in Validos then begin query1.Edit; query1valor.value:=RetornaValor(iTemp); query1.post; bitbtn2.setfocus; end; end; end; end;
...vê se isso resolve...
...flws
Gostei + 0
22/07/2005
Adriano_servitec
No editcodigo digito assim =1
No editformula digito assim=salario/30*
depois gravo
Novamente no mesmo editcodigo=2
No editformula digito assim=salario/220*
depois gravo
Novamente no mesmo editcodigo=3
No editformula digito assim=salario/220*1.5
depois gravo
e assim por diante
Entao em outro form quando digitar o codigo 1 ele pega a formula e o dbedit5.text eh o mesmo que quantidade ele calcula pra dar o valor
Valeu amigo pela ajuda
Obrigado
Gostei + 0
22/07/2005
Daemon
Gostei + 0
22/07/2005
Adriano_servitec
Fiz um tipo de calculo para usar operadores mais nao resolveu, usei 5 dbedits, dbedit1salario, dbedit2op1,dbedit3fixo,dbedit4op2,dbedit5result eis ai o codigo que fiz
num bitbtn calcula os operadores
var
opr,opr2, OPR3: char;
vr1,vr2,vr3, VR4, result: real;
begin
vr1:=StrToFloat(DBEdit1.Text);
vr2:=StrToFloat(DBEdit3.Text);
vr3:=strtofloat(dbedit5.text);
opr:=DBEdit2.Text[1];
opr2:=dbedit4.text[1];
OPR3:=DBEDIT10.TEXT[1];
case opr of
´+´: result:=vr1+vr2;
´-´: result:=vr1-vr2;
´*´: result:=vr1*vr2;
´/´: result:=vr1/vr2;
else exit end;
vr1:=result;
vr2:=StrToFloat(DBEdit5.Text);
opr:=DBEdit4.Text[1];
case opr of
´+´: result:=vr1+vr2;
´-´: result:=vr1-vr2;
´*´: result:=vr1*vr2;
´/´: result:=vr1/vr2;
else exit end;
qry1.Edit;
qry1result.value:=result;
qry1.post;
end;
Isso funciona bem se o calculo for salario/220*30=result
Mais nao funciona com Horas Extras pq a formula eh assim
salario/220*1.5*quanthoras
Nesse caso teria que ter mais operadores e na pratica fica dificil de desenvolver, pois existe muitos calculos diferentes
Bom vou fazer do jeito que estava mesmo
Obrigado amigos pela ajuda
Valeu pela força de todos
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)