Preço de venda acrescido da margem de lucro

Delphi

07/09/2006

Ola pessoal , sou um estudante de informatica, estou fazendo um trabalho em delphi 7, gostaria de fazer uma operação na janela de cadastro de produto, quando digitar o valor de compra (Campo1), e margem de lucro (Campo2) obtenho o preço de venda ( Campo3) .
Alguem pode me ajudar? desde já agradeço.
Estou usado banco de dados InterBase.


Jmotec1

Jmotec1

Curtidas 0

Respostas

Micheus

Micheus

07/09/2006

[b:3eb317f5f8]jmotec1[/b:3eb317f5f8], vc está utilizando componentes DBEdit para informar os campos?
Se sim, e considerando que seu dataset chame-se TabProduto, uma alternativa seria criar um procedimento para realizar o cálculo (CalculaCampo3) e no evento OnExit dos campos 1 e 2, após verificar alteração de seu valor, chamar o procedimento para calcular o campo3 (considerando que o usuário não poderá digitá-lo):
procedure FormCadastroProduto.CalculaCampo3;
begin
  TabProdutoCAMPO3.Value := TabProdutoCAMPO1.AsFloat +
                          (TabProdutoCAMPO1.AsFloat *TabProdutoCAMPO2.AsFloat/100);
end;

-> evento OnExit DBEdit Campo1
begin
  if TabProdutoCAMPO1.Value <> TabProdutoCAMPO1.OldValue then
    CalculaCampo3;
end;

-> evento OnExit DBEdit Campo2
begin
  if TabProdutoCAMPO2.Value <> TabProdutoCAMPO2.OldValue then
    CalculaCampo3;
end;



GOSTEI 0
Marco Salles

Marco Salles

07/09/2006

gosto muito de fazer isto no evento onchange dos dois DbEdits , aonde esses dois DbEdits utilizem o mesmo manipulador de evento OnChange

é so no objecto inspectoro do primeiro , no evento onchange , alterar o nome e depois no evento onchange do segundo atribuir o mesmo evento

procedure TForm1.DBEditMesmoManipularorOnChange(Sender: TObject);
var
valor,lucro:Extended;
begin
if TryStrToFloat(DbEdit1.Text,valor) then
 begin
   if TryStrToFloat(DbEdit2.Text,Lucro) then
      dbedit3.Text:=formatFloat(´0.00´,valor*Lucro)
   else
      dbedit3.Text:=formatFloat(´0.00´,0);
 end
else
   dbedit3.Text:=formatFloat(´0.00´,0);
end;



GOSTEI 0
Alexdetonator

Alexdetonator

07/09/2006

Grande Marco Salles,

sou iniciante no Delphi e sua dica me ajudou bastante nesse tipo de cálculo.

Tenho uma dúvida em relação a esse cálculo quando uso um somatório num DBGrid e apresento num DBEdit. Como posso atualizar tambem essa soma no DBGrid e apresenta-la no DBEdit ?

Obrigado


GOSTEI 0
Marco Salles

Marco Salles

07/09/2006

Tenho uma dúvida em relação a esse cálculo quando uso um somatório num DBGrid e apresento num DBEdit. Como posso atualizar tambem essa soma no DBGrid e apresenta-la no DBEdit ?


o que seria este somatorio no DbGrid amigo alexdetonator ,

isto geralmente é feito usando um[b:f997618f97] campo calculado[/b:f997618f97]..

seria este o seu caso ?????


GOSTEI 0
Alexdetonator

Alexdetonator

07/09/2006

Grande Marco,

Em uma tela do meu formulario ´orcamento´ tenho um dbgrid com mao de obra de servicos contendo ´servico - qtde horas - val unitario - val total´

já consegui jogar para um edit5.text o valor total desses servicos, porem quando adiciono um item ao dbgrid só estou conseguindo ver atualizado quando fecho e abro novamente o meu form orcamento (formshow).

Obrigado


GOSTEI 0
Marco Salles

Marco Salles

07/09/2006

já consegui jogar para um [b:fa42c711b5]edit5.text [/b:fa42c711b5]o valor total desses servicos, porem quando adiciono um item ao dbgrid só estou conseguindo ver atualizado quando fecho e abro novamente o meu form orcamento (formshow).


na sua duvida inicial voce diz em :
Como posso atualizar tambem essa soma no DBGrid e apresenta-la no [b:fa42c711b5]DBEdit[/b:fa42c711b5] ?


netes tópico voce diz:
já consegui jogar para um [b:fa42c711b5]edit5.text [/b:fa42c711b5]


estou meio confuso..

mas vou arriscar um palpite

voce pode usar os evento onvalidade dos campos
qtde horas e val unitario
Tipo isso:

procedure TForm1.SeuDataSetGeralValidate(Sender: TField); begin SeuDataSetTotal.AsCurrency:=SeuDataSetValor_unitario.AsCurrency* SeuDataSetQtde_horas.Asfloat; edit1.Text:=currencyString+formatFloat(´0.00´,cdsTotal.AsCurrency); end;


lo lugar do edit voce pode usar um DbEdit (Controle DataWare)

usando esse modelo , voce deve definir o Tfield(Total) com readOnley=True
e usando o edit voce deve usar o evento AfterScrool do seu SeuDataSet para atualizar o valor do edit sempre que voce rolar pela Grade
procedure TForm1.SeuDataSetAfterScroll(DataSet: TDataSet); begin edit1.Text:=currencyString+formatFloat(´0.00´,cdsTotal.AsCurrency); end;


2) O outro modelo é usar um campo calculado


GOSTEI 0
POSTAR