Fórum Formatar Campo em DBGrid em tempo de execução #376898
04/05/2010
0
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
Curtir tópico
+ 0Posts
04/05/2010
Wesley Yamazack
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
04/05/2010
Jorge Silva
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
05/05/2010
Jorge Silva
Achei o erro, agora esta funcionando ok.
Valeu meu Velho
Até a proxima.
Jorge
Gostei + 0
05/05/2010
Wesley Yamazack
Um abraço
Wesley Y
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)