Grid Zebrado...
Após executar este código, o indicador de posição do grid aquele caqracter ´>´ nunca fica no primeiro registro, ele sempre fica no registro q foi pintado, quando se clica no último registro, depois volto ao primeiro, aí este defeito é corrigido, como posso fazer para sempre depois q pintar o grid, eu posicionar o registro no 1º item ?
procedure TForm3.RxDBGrid1DrawColumnCell(Sender: TObject;const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
Var
A:Talignment; //Guarda a Formatação da Coluna
begin
a:=rxdbGrid1.columns[DataCOL].Alignment; //Pegando a formatação da Coluna
if not odd(ADOQuery1.RecNo) then //Testando se é par
begin
RXDBGrid1.Canvas.Brush.Color:= clMoneyGreen; //Atribui cor
RXDBGrid1.Fields[datacol].Alignment:=a; //Atribui formatação
RXDBGrid1.Canvas.FillRect(Rect);
RXDBGrid1.DefaultDrawDataCell(Rect, Column.Field, State); //Pinta a Célula
if gdFocused in State then //testa se está selecionado
begin
RXDBGrid1.Canvas.Brush.Color:= clBlack;
RXDBGrid1.Canvas.FillRect(Rect);
RXDBGrid1.DefaultDrawDataCell(Rect, Column.Field, State);
end;
end;
end;
procedure TForm3.RxDBGrid1DrawColumnCell(Sender: TObject;const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
Var
A:Talignment; //Guarda a Formatação da Coluna
begin
a:=rxdbGrid1.columns[DataCOL].Alignment; //Pegando a formatação da Coluna
if not odd(ADOQuery1.RecNo) then //Testando se é par
begin
RXDBGrid1.Canvas.Brush.Color:= clMoneyGreen; //Atribui cor
RXDBGrid1.Fields[datacol].Alignment:=a; //Atribui formatação
RXDBGrid1.Canvas.FillRect(Rect);
RXDBGrid1.DefaultDrawDataCell(Rect, Column.Field, State); //Pinta a Célula
if gdFocused in State then //testa se está selecionado
begin
RXDBGrid1.Canvas.Brush.Color:= clBlack;
RXDBGrid1.Canvas.FillRect(Rect);
RXDBGrid1.DefaultDrawDataCell(Rect, Column.Field, State);
end;
end;
end;
Cabal
Curtidas 0
Respostas
Ricardo_ascii
04/05/2006
Olá amigo,
Eu faço dessa forma e vai normal. Dê uma olhada e vê se ajuda.
Coloca no evento do DrawColumnCell do dbgrid.
if not odd(tabela.RecNo) then
begin
if not (gdSelected in state) then
begin
dbGrid1.Canvas.Brush.Color := $00FFF8F0;
dbGrid1.Canvas.FillRect(Rect);
dbGrid1.DefaultDrawDataCell(rect,column.field,state);
end;
end;
espero ter ajudado
Eu faço dessa forma e vai normal. Dê uma olhada e vê se ajuda.
Coloca no evento do DrawColumnCell do dbgrid.
if not odd(tabela.RecNo) then
begin
if not (gdSelected in state) then
begin
dbGrid1.Canvas.Brush.Color := $00FFF8F0;
dbGrid1.Canvas.FillRect(Rect);
dbGrid1.DefaultDrawDataCell(rect,column.field,state);
end;
end;
espero ter ajudado
GOSTEI 0
Cabal
04/05/2006
Grande amigo, veleu pela força, fiqcou ótimo, só q eu tenho o seguinte problema, eu tenho Colunas com a formatação taCenter e Outras com taLeftJustifi no grid. Como eu poderia antes de escrever a celula guardar a formatação, pois toda vez q ele executa a pintura ele escreve com a formatação alinhada a esquerda. Valeu amigo Abraços...
GOSTEI 0
Ricardo_ascii
04/05/2006
Ola,
Vc. tem que ir la no componente table e colocar ´tacenter´ no campo correspondente.
Abraço, Ricardo
Vc. tem que ir la no componente table e colocar ´tacenter´ no campo correspondente.
Abraço, Ricardo
GOSTEI 0