problemas com dbgrid quandoo zebrado
ola colegas,tenh um grande problema no dbgrid, quando uso os comsndos para zebrar ele, funciona legal, mas nas colunas onde tem valores formatados ele simplesmente tira a formatação exe : coluna valor formatado coomo R$ 5,00 noo dbgrid aparece 5 ele tira o R$ e tira os zeros, se tiver centavostambem R$ 5,40 aparece 5,4
ajudem-me a solucionar e deixar meu sistema melhor
obrigado
uso farebird e dbexpress com clientedataset no delphi 2010
ajudem-me a solucionar e deixar meu sistema melhor
obrigado
uso farebird e dbexpress com clientedataset no delphi 2010
Edson Melo
Curtidas 0
Respostas
Leandro Carvalho
24/03/2012
Como o método FillRect pinta toda a célula apagando assim seu texto original, precisamos chamar DefaltDrawCell para gerar o texto padrão, que no teu caso é o valor do campo.
Use no final do comando:
DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State);
Use no final do comando:
DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State);
GOSTEI 0
Marco Salles
24/03/2012
isto mesmo .. Ao inves de :
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString);
faça :
DbGrid1.DefaultDrawDataCell(Rect,Column.Field,State);
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString);
faça :
DbGrid1.DefaultDrawDataCell(Rect,Column.Field,State);
GOSTEI 0
Glauber Lima
24/03/2012
Bom dia, no meu sistema eu uso da seguinte forma:
eu fiz uma procedure:
procedure ZebrarDbGrid(dSouce: TDataSource; grid: TDBGrid;
State: TGridDrawState; Rect: TRect; Column: TColumn);
begin
if not odd(dSouce.DataSet.RecNo) then
if not(gdselected in State) then
begin
grid.canvas.Brush.Color := $00FFEFDF;
grid.canvas.FillRect(Rect);
grid.DefaultDrawDataCell(Rect, Column.Field, State);
grid.Color := clWindow;
end;
end;
eu chamo a minha procedure no evento: onDrawColumnCell;
ZebrarDbGrid(datasourc1, DBGrid1, State, Rect, Column);
dessa forma as formatações que esta no clientdataset não serão perdidas.
eu fiz uma procedure:
procedure ZebrarDbGrid(dSouce: TDataSource; grid: TDBGrid;
State: TGridDrawState; Rect: TRect; Column: TColumn);
begin
if not odd(dSouce.DataSet.RecNo) then
if not(gdselected in State) then
begin
grid.canvas.Brush.Color := $00FFEFDF;
grid.canvas.FillRect(Rect);
grid.DefaultDrawDataCell(Rect, Column.Field, State);
grid.Color := clWindow;
end;
end;
eu chamo a minha procedure no evento: onDrawColumnCell;
ZebrarDbGrid(datasourc1, DBGrid1, State, Rect, Column);
dessa forma as formatações que esta no clientdataset não serão perdidas.
GOSTEI 0
Edson Melo
24/03/2012
ola pessoal vou tentar e depois posto uma mensagem informando se deu certo, não tenho internet estou em uma lam house, vou pra casa testar
obrigado
obrigado
GOSTEI 0
Edson Melo
24/03/2012
temtei a procedure indicada acima , funcionar funcionou so que apresewnta um outro problema agora a formatacoa de valores ficou ok, mas quando a coluna for numerica , ele bagunca com a centralizacao exemplo
descricao qtd valo
teste 1 1 R$ 1,00
teste 2 2 R$ 1,00
Teste 3 1 R$ 1,00
e isso ai , a coluna de quantidade baguncatem uma outra coluna que tambem traz numero
a de codigo, tambem faz isso sera que alguen tem como me ajudar, com mais essa opcao
atenciosamente
descricao qtd valo
teste 1 1 R$ 1,00
teste 2 2 R$ 1,00
Teste 3 1 R$ 1,00
e isso ai , a coluna de quantidade baguncatem uma outra coluna que tambem traz numero
a de codigo, tambem faz isso sera que alguen tem como me ajudar, com mais essa opcao
atenciosamente
GOSTEI 0
Edson Melo
24/03/2012
o exemplo nao saiu legal
mas e assim na coluna qtd um numero sai na esquerda outro na direita e assim sucessivamente
1
1
1
1
mais ou menos assim
mas e assim na coluna qtd um numero sai na esquerda outro na direita e assim sucessivamente
1
1
1
1
mais ou menos assim
GOSTEI 0
Edson Melo
24/03/2012
o exemplo acima nao saiu legal mas e cada linha em um sentido
GOSTEI 0
Edson Melo
24/03/2012
consegui resolver não sei se era do jeito certo mas resolvi
fiz o seguinte :]
no clientedataset o campo estava alinhado a esquerda
no sqlquery estava alinhado a direita
no dbgrid estava alinhado no centro
consegui resolver colocando todos eles alionhado em uma posicao so
quer tiver este problema verifique estas opções
ok ate logo
fiz o seguinte :]
no clientedataset o campo estava alinhado a esquerda
no sqlquery estava alinhado a direita
no dbgrid estava alinhado no centro
consegui resolver colocando todos eles alionhado em uma posicao so
quer tiver este problema verifique estas opções
ok ate logo
GOSTEI 0