Formatar Campo em DBGrid em tempo de execução

04/05/2010

Boa tarde,

Estou alimentado um dbgrid via dataset criado em tempo de execução,  o problema é que existem campos que tem que ser exibidos neste DBGRID com uma determinada mascara.

No momento estão sendo exibidos no formato que são armazenados no banco.

sei que existe a propriedade displayformat no object inspector do TClientDataSet, mas não estou conseguindo acessar essa propriedade em tempo de execução. O procedimento que estou usando é o seguinte: Crio um TClientDataSet em tempo de execução e via código estou gerando uma instrução SQL que alimenta a propriedade ComandText, após incluo o TClientDataSet na propriedade DataSet do DataSource. O resultado é que todos os dados são exibidos mas não tenho o controle das mascaras. No aguardo Jorge Farias
Jorge Silva

Jorge Silva

Curtidas 0

Respostas

Wesley Yamazack

Wesley Yamazack

04/05/2010

Olá amigo,
  Na hora que você for criar o field faça o seguinte :

Estou testando aqui o tipo do field, mas se você souber não precisa, e depois faça a formação da seguinte forma. veja : 

if ClientDataSet1.Fields[1].DataType = ftFloat then
      (ClientDataSet1.Fields[1] as TFloatField).DisplayFormat := '#0.00'; 

Att,

Wesley Y
GOSTEI 0
Jorge Silva

Jorge Silva

04/05/2010

Wesley não funcionou, não esta dando erro nenhum mas não esta mudando o formato, devo estar colocando no lugar errado o codigo esta abaixo:



function TFuncoes.FiltrarVendedor(LCODEMP,LCODFIL,LNUMANE: Integer): TClientDataSet;
var
  LSQL:string;
  RetDataSet:TClientDataSet;
begin
  RetDataSet:=TClientDataSet.Create(nil);
  RetDataSet.Close;
  RetDataSet.SetProvider(dmCargas.dspvwVendedor);
  RetDataSet.FetchParams;
  LSQL:=' select b.codemp,b.codfil,b.numane,b.codrep,sum(pesbru),c.nomrep'+
        ' from e135pfa b,e090rep c'+
        ' where ((codemp=:pcodemp) and (codfil=:pcodfil) and (numane=:pnumane) and (b.codrep=c.codrep))'+
        ' group by codemp,codfil,numane,b.codrep,nomrep';
  RetDataSet.CommandText:=LSQL;
  RetDataSet.Params.ParamByName('pcodemp').AsInteger:=LCODEMP;
  RetDataSet.Params.ParamByName('pcodfil').AsInteger:=LCODFIL;
  RetDataSet.Params.ParamByName('pnumane').AsLargeInt:=LNUMANE;
  RetDataSet.Open;
  if RetDataSet.Fields[5].DataType = ftFloat then
    (RetDataSet.Fields[5] as TFloatField).DisplayFormat := '#0.00';
  Result:=RetDataSet;
end;

GOSTEI 0
Jorge Silva

Jorge Silva

04/05/2010

Wesley,

Achei o erro, agora esta funcionando ok.

Valeu meu Velho

Até a proxima.

Jorge
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/05/2010

Blz, amigo chamado fechado. ate a próxima

Um abraço

Wesley Y
GOSTEI 0
POSTAR