Pintar DBGrid...

Delphi

09/09/2005

Pessoal tenho o seguite código no [b:5b918079bc]OnDrawCollumCel[/b:5b918079bc]:
with BrDbGrdAlunosMedias do
begin
  if ((gdSelected in State) = False) and (DataSource.DataSet.
    FieldByName(´SituacaoAtual´).AsString = ´Transferido´) then
  begin
    BrDbGrdAlunosMedias.Canvas.Brush.Color := clBtnShadow;
    BrDbGrdAlunosMedias.Font.Color := clWhite;
    BrDbGrdAlunosMedias.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
end;
Quero que meus alunos transferidos sejam destacados... só que estou tendo um comportamento estranho...[list=1:5b918079bc]
[*:5b918079bc]A primeira coluna da linha dos matriculados só é pintada quando cliquo na mesma;
[*:5b918079bc]As duas primeiras colunas ficam com a fonte branca independente se está transferido ou não;
[*:5b918079bc]O restante das colunas ficam com a fonte preta independente se está transferido ou não;
[*:5b918079bc]Só consigo navegar no grid após apertar a seta ´pra baixo´ (down);
[/list:o:5b918079bc]Estou realmente muito confuzo já que é massante depurar código nesse evento... :?:


Bruno Belchior

Bruno Belchior

Curtidas 0

Respostas

Bruno Belchior

Bruno Belchior

09/09/2005

sobe...


GOSTEI 0
Marco Salles

Marco Salles

09/09/2005

Parece estranho , mas esta instrução

 BrDbGrdAlunosMedias.DefaultDrawColumnCell(Rect, DataCol, Column, State); 


[b:c124075e25]Não deveria estar fora do Bloco if then end;[/b:c124075e25] :?: :?: :?:


GOSTEI 0
Bruno Belchior

Bruno Belchior

09/09/2005

até onde sei [b:6dc2b8c207]não[/b:6dc2b8c207]... se eu [b:6dc2b8c207]não[/b:6dc2b8c207] chamá-la, é porque quero pintar os valores padrões... ou estou errado :?:


GOSTEI 0
Marco Salles

Marco Salles

09/09/2005

até onde sei não... se eu não chamá-la, é porque quero pintar os valores padrões... ou estou errado


Depende de como esta a sua propriedade defaltDrawing

se voce deixar a propriedade defaltDraing configurado em true , a grade apresentara a saida padrão , mas se voce deixar a Propriedade defaltDrawing em false voce deve chamar o metodo DafeltDrawColumnCell.


GOSTEI 0
Bruno Belchior

Bruno Belchior

09/09/2005

Mas ela está em True...


GOSTEI 0
Cabelo

Cabelo

09/09/2005

[quote:189dfe7802=´Bruno Belchior´]Pessoal tenho o seguite código no [b:189dfe7802]OnDrawCollumCel[/b:189dfe7802]:
with BrDbGrdAlunosMedias do
begin
  if ((gdSelected in State) = False) and (DataSource.DataSet.
    FieldByName(´SituacaoAtual´).AsString = ´Transferido´) then
  begin
    BrDbGrdAlunosMedias.Canvas.Brush.Color := clBtnShadow;
    BrDbGrdAlunosMedias.Font.Color := clWhite;
    BrDbGrdAlunosMedias.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
end;
Quero que meus alunos transferidos sejam destacados... só que estou tendo um comportamento estranho...[list=1:189dfe7802]
[*:189dfe7802]A primeira coluna da linha dos matriculados só é pintada quando cliquo na mesma;
[*:189dfe7802]As duas primeiras colunas ficam com a fonte branca independente se está transferido ou não;
[*:189dfe7802]O restante das colunas ficam com a fonte preta independente se está transferido ou não;
[*:189dfe7802]Só consigo navegar no grid após apertar a seta ´pra baixo´ (down);
[/list:o:189dfe7802]Estou realmente muito confuzo já que é massante depurar código nesse evento... :?:[/quote:189dfe7802]

Neste trecho...

será que vc está fazendo a pergunta certa??

if ((gdSelected in State) = False) and (DataSource.DataSet.
FieldByName(´SituacaoAtual´).AsString = ´Transferido´) then
begin
BrDbGrdAlunosMedias.Canvas.Brush.Color := clBtnShadow;
BrDbGrdAlunosMedias.Font.Color := clWhite;
BrDbGrdAlunosMedias.DefaultDrawColumnCell(Rect, DataCol, Column, State);

tente assim.. acho que resolve..

if Trim(DataSource.DataSet.
FieldByName(´SituacaoAtual´).AsString) = ´Transferido´ then
begin
BrDbGrdAlunosMedias.Canvas.Brush.Color := clBtnShadow;
BrDbGrdAlunosMedias.Font.Color := clWhite;
BrDbGrdAlunosMedias.DefaultDrawColumnCell(Rect, DataCol, Column, State);

Se vc quiser somente destacar quando clicar na coluna do grid, aí sim vc coloca assim..

if ((gdSelected in State) = False) and (Trim(DataSource.DataSet.
FieldByName(´SituacaoAtual´).AsString) = ´Transferido´) then
begin
BrDbGrdAlunosMedias.Canvas.Brush.Color := clBtnShadow;
BrDbGrdAlunosMedias.Font.Color := clWhite;
BrDbGrdAlunosMedias.DefaultDrawColumnCell(Rect, DataCol, Column, State);

Espero ter ajudado..


GOSTEI 0
Marco Salles

Marco Salles

09/09/2005

Mas ela está em True...


é isto que eu disse

Coloque a em false e coloque O Codigo DefaultDrawColumnCell Fora do Bloco If Ten

Código: 
 BrDbGrdAlunosMedias.DefaultDrawColumnCell(Rect, DataCol, Column, State);  



GOSTEI 0
POSTAR