problemas com dbgrid quandoo zebrado

Delphi

24/03/2012

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
Edson Melo

Edson Melo

Curtidas 0

Respostas

Leandro Carvalho

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);
GOSTEI 0
Marco Salles

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);
GOSTEI 0
Glauber Lima

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.
GOSTEI 0
Edson Melo

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
GOSTEI 0
Edson Melo

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
GOSTEI 0
Edson Melo

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
GOSTEI 0
Edson Melo

Edson Melo

24/03/2012

o exemplo acima nao saiu legal mas e cada linha em um sentido
GOSTEI 0
Edson Melo

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
GOSTEI 0
POSTAR