Fórum Conversão para unidade monetária #363844
12/09/2008
0
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
Curtir tópico
+ 0Posts
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;
Gostei + 0
16/09/2008
Tamiriss
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...
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)