Problemas Na DBGrid

Delphi

22/03/2007

Olá amigos, sou novo no fórum. Estou com um problema.

O Aplicativo usado aqui na empresa onde trabalho possui dados numa DBGrid.

Os usuários desse aplicativo alimentam (nessa dbgrid) um campo de valor. Esse valor por sua vez é copiado (Crtl + C) de outro lugar e nesse lugar o valor está formatado da seguinte forma: ´2.555,60´.

O aplicativo precisa tratar o valor ´colado´ e passar no formato ´2555,60´ para que o Delphi aceite.

O problema é que após copiar e colar na aplicação nesse formato (´2.555,60´), quando tento passar pra linha de baixo (por consequencia gravar a alteração) o sistema me mostra a mensagem: ´is not a valid floating point value for field´.

Tentei usar o StringReplace no evento BEFORE POST da seguinte forma:

svalor := StringReplace(DBGrid4.Columns[6].Field.AsString,´.´,´´, [rfReplaceAll]);
Q_Parcelas_FinanciadoresVAL_PARCELA_FINANCIADOR.AsCurrency := StrToCurr(svalor);

Mas, o sistema apresenta o mesmo erro. Tento inserir um Break Point e o sistema não chega nem a passar pelo evento BEFORE POST. Tentei colocar isso em outros eventos mas, também não funcionou.

Alguém sabe uma forma de resolver isso ???

Ah, estou usando Delphi 7 com Oracle.

Abraços

Richard Wagner


Richardwagner

Richardwagner

Curtidas 0

Respostas

Marco Salles

Marco Salles

22/03/2007

No evento onsettext do field Escreva a sua idéia

procedure TForm1.SeuDataSETSeuCampoSetText(Sender: TField; const Text: String); begin sender.AsString:=StringReplace(text,´.´,´´, [rfReplaceAll]); end;



GOSTEI 0
Richardwagner

Richardwagner

22/03/2007

Coloquei

procedure TF_AjusteParcelas.Q_Parcelas_FinanciadoresVAL_PARCELA_FINANCIADORSetText(Sender: TField; const Text: String);
begin
Sender.AsString := StringReplace(DBGrid4.Columns[6].Field.AsString,´.´,´´, [rfReplaceAll]);
end;

Ele está passando como valor (DBGrid4.Columns[6].Field.AsString) o valor antes de ´colar´ o novo valor.

Como se ele não tivesse reconhecendo o valor que eu colo.


GOSTEI 0
Marco Salles

Marco Salles

22/03/2007

Coloquei procedure TF_AjusteParcelas.Q_Parcelas_FinanciadoresVAL_PARCELA_FINANCIADORSetText(Sender: TField; const Text: String); begin Sender.AsString := StringReplace(DBGrid4.Columns[6].Field.AsString,´.´,´´, [rfReplaceAll]); end; Ele está passando como valor (DBGrid4.Columns[6].Field.AsString) o valor antes de ´colar´ o novo valor. Como se ele não tivesse reconhecendo o valor que eu colo.


procedure TF_AjusteParcelas.Q_Parcelas_FinanciadoresVAL_PARCELA_FINANCIADORSetText(Sender: TField; const Text: String); begin Sender.AsString := StringReplace(text,´.´,´´, [rfReplaceAll]); end;


[b:6f8ac5cea7]so trocar o DBGrid4.Columns[6].Field.AsString pelo Parametro Text[/b:6f8ac5cea7]


GOSTEI 0
Richardwagner

Richardwagner

22/03/2007

Mas, aí é que tá...

O parametro text precisa receber um valor. E o valor que eu passo pra ele é exatamente esse ´DBGrid4.Columns[6].Field.AsString´ né ???


GOSTEI 0
Marco Salles

Marco Salles

22/03/2007

Mas, aí é que tá... O parametro text precisa receber um valor. E o valor que eu passo pra ele é exatamente esse ´DBGrid4.Columns[6].Field.AsString´ né ???


[u:fe94e7cf73][b:fe94e7cf73]não... [/b:fe94e7cf73][/u:fe94e7cf73]o parametro text é o que esta no seu DBGrid4.Columns[6].Field.AsString , momento antes dele ser gravado na base de dados..

Mas porque que não esta dando certo com ?

Sender.AsString := StringReplace(text,´.´,´´, [rfReplaceAll]);



GOSTEI 0
Richardwagner

Richardwagner

22/03/2007

Cara, deu certo.

Eu não tinha atentado pro Parametro Text.

Muitissimo Obrigado.

Abraços

Richard Wagner


GOSTEI 0
POSTAR