Formatar Campo em DBGrid em tempo de execução
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
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
Curtidas 0
Respostas
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
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
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;
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
04/05/2010
Wesley,
Achei o erro, agora esta funcionando ok.
Valeu meu Velho
Até a proxima.
Jorge
Achei o erro, agora esta funcionando ok.
Valeu meu Velho
Até a proxima.
Jorge
GOSTEI 0
Wesley Yamazack
04/05/2010
Blz, amigo chamado fechado. ate a próxima
Um abraço
Wesley Y
Um abraço
Wesley Y
GOSTEI 0