Fórum Conversão para unidade monetária #363844

12/09/2008

0

Pessoal, to com um problemão aqui...
Tenho um formulário em que cadastramos a forma de pagamento do cliente.
Nesse formulário o usuário escolhe um um comboBox se é mensal, trimestra... , depois escolhe em outro comboBox o tipo do programa que ele tem Normal, Especial, ....
Depois tenho 2 edits onde o usuário coloca o preço que ele paga pelo sistema.
No onExit desses edits eu coloquei um código p/ transformar o que o usuario digitou em valor monetário, ou seja, de 5,9 para R$5,90.
Ele passa blzinha, o meu problema é que depois que ele passa o que tinha no combobox desaparece, não os items, mas o text.
O código é o seguinte:

procedure TFormFormasPagamento.EditValorExit(Sender: TObject);
var preco:double;
begin
  Preco := ConverteParaNumeroFlutuante(EditValor.Text);
  EditValor.Text := Format(´¬m´, [Preco]);
end;

function ConverteParaNumeroFlutuante(
  NumString: String): Double;
Var
  i,TamStr : INteger;
  Str: String;
BEGIN
    Str := ´´;
    TamStr := Length(NumString);
    FOr i := 1 To TamStr DO
    IF (NumString[i] = ´,´) THEN
        Str := Str + ´,´
    else
    IF (NumString[i] = ´.´) THEN
        Str := Str + ´.´
    ELSE
    case (NumString[i]) OF
       ´0´ : Str := Str + NumString[i];
       ´1´ : Str := Str + NumString[i];
       ´2´ : Str := Str + NumString[i];
       ´3´ : Str := Str + NumString[i];
       ´4´ : Str := Str + NumString[i];
       ´5´ : Str := Str + NumString[i];
       ´6´ : Str := Str + NumString[i];
       ´7´ : Str := Str + NumString[i];
       ´8´ : Str := Str + NumString[i];
       ´9´ : Str := Str + NumString[i];
    END;
    IF ( Str <> ´´) THEN
         ConverteParaNumeroFlutuante := StrToFloat(Str)
    ELSE
      ConverteParaNumeroFlutuante := 0;
end;


E se eu vou editar o conteúdo eu jogo os valores para o formulários e o text dos dois comboBox também ficam em branco.
o Código de para jogar os valores é:

dm1.ProdutosClientes.open;
      dm1.ProdutosClientes.Filtered := false;
      dm1.ProdutosClientes.Filter := ´IDProduto = ´ + IntToStr(FormCadCliente.idProduto);
      dm1.ProdutosClientes.Filtered := true;
      EditValor.Text := dm1.ProdutosClientes.FieldByName(´Valor´).value;
      EditValorPonto.Text := dm1.ProdutosClientes.FieldByName(´ValPontoAdicional´).value;
      EditPonto.Text := dm1.ProdutosClientes.FieldByName(´NumPontoAdicional´).value;
      if dm1.ProdutosClientes.FieldByName(´IDSistema´).value = 0 THEN
          ComboSistema.Text := ´Normal´
        else
        if dm1.ProdutosClientes.FieldByName(´IDSistema´).value = 1 THEN
          ComboSistema.Items[1] //:= ´Especial´
        else
        if dm1.ProdutosClientes.FieldByName(´IDSistema´).value = 2 THEN
          ComboSistema.Text := ´Super´;
      ComboPagamento.Text := dm1.ProdutosClientes.FieldByName(´Pagamento´).value;


O que estou fazendo de arrado para zerar os comboBoxes?


Tamiriss

Tamiriss

Responder

Posts

12/09/2008

Diegotiemann

procedure TFormFormasPagamento.EditValorExit(Sender: TObject);
var preco:double;
begin
  Preco := ConverteParaNumeroFlutuante(EditValor.Text);
  EditValor.Text := Format(´¬m´, [Preco]);
end;


Você pode substituir aquela sua baita funçãoConverteParaNumeroFlutuante por isso:

procedure TFormFormasPagamento.EditValorExit(Sender: TObject);
begin
 if  EditValor.Text <> ´´ then
    EditValor.Text := FormatFloat(´R$ .0.00´, StrToFloat(EditValor.Text )
else
 EditValor.Text:=´R$ 0,00´;

end;



Responder

Gostei + 0

16/09/2008

Tamiriss

Mas ai meu problema continua...
Quando eu saio do edit que tem o código os comboboxes ficam em branco.
E eu já refiz a tela, já apaguei e coloquei outros várias vezes...


Responder

Gostei + 0

19/09/2008

Emerson Nascimento

dm1.ProdutosClientes.open;
dm1.ProdutosClientes.Filtered := false;
dm1.ProdutosClientes.Filter := ´IDProduto = ´ + IntToStr(FormCadCliente.idProduto);
dm1.ProdutosClientes.Filtered := true;

EditValor.Text := dm1.ProdutosClientes.FieldByName(´Valor´).AsString;
EditValorPonto.Text := dm1.ProdutosClientes.FieldByName(´ValPontoAdicional´).AsString;
EditPonto.Text := dm1.ProdutosClientes.FieldByName(´NumPontoAdicional´).AsString;

case dm1.ProdutosClientes.FieldByName(´IDSistema´).AsInteger of
  0: ComboSistema.Text := ´Normal´;
  1: ComboSistema.Text := ´Especial´;
  2: ComboSistema.Text := ´Super´;
end;

ComboPagamento.Text := dm1.ProdutosClientes.FieldByName(´Pagamento´).AsString;


tenha certeza que os campos [i:ffd78aa086]dm1.ProdutosClientes.FieldByName(´IDSistema´)[/i:ffd78aa086] e [i:ffd78aa086]dm1.ProdutosClientes.FieldByName(´Pagamento´)[/i:ffd78aa086], utilizados para fazer a atribuição dos combos, estejam preenchidos.


Responder

Gostei + 0

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

Aceitar