Fórum Colocando cor em um dbgrid #366485
27/11/2008
0
Presciso de uma ajuda.
Tenho uns cadastro de caixa aqui em meu sistema e tenho um DBgrid que mostra os Status dessas caixa.
Campos do DBgrid CAIXA, DATA, HORA e STATUS
então nesse meu DB grid é mostrado todas as caixas que eu cadastrei e os status delas.
eu tenho dois status , Disponivel, Indisponivel.
Eu queria que quando abrisse o Dbgrid mostrasse no Status quando for DIsponivel ficasse em Azul e Indisponivel ficasse em vermelho.
Alguem poderia me ajudar ???
Cleiflavio
Curtir tópico
+ 0Posts
27/11/2008
Sistemald
if DataSource.DataSet.RecordCount = 0 then exit; if (gdSelected in State) then // se a célula não está selecionada begin Canvas.Font.Style:=[fsBold]; Canvas.Font.Color:= FCorFontSelected; Canvas.Brush.Color:=FCorSelected; // define uma cor de fundo canvas.FillRect(Rect); // pinta a célula DefaultDrawDataCell(rect,Column.Field,State); // Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString);//**** end else begin if odd(DataSource.Dataset.RecNo) then // se for ímpar begin Canvas.Brush.Color:=FCor; // define uma cor de fundo canvas.FillRect(Rect); // pinta a célula DefaultDrawDataCell(rect,Column.Field,State); // pinta o texto padrão end; end;
Nesse código a primeira parte checa se a coluna que esta pintando esta selecionada, no else verifica se a linha é impar, caso seja pinta de uma determinada cor.
No seu caso ao invés de verificar se é impar verifica se o caixa é disponivel ou não.
Gostei + 0
27/11/2008
Cleiflavio
Clei
Gostei + 0
27/11/2008
Sistemald
aproveitando eu tenho um dbgrid com varios recursos, http://desenvolvedor.donato.inf.br, herda do Dbgrid e é opensource
Gostei + 0
27/11/2008
Cleiflavio
Isso seria possivel ???
Gostei + 0
27/11/2008
Sistemald
if DataSource.DataSet.RecordCount = 0 then exit; if (gdSelected in State) then // se a célula não está selecionada begin if DataSource.Dataset.FieldByName(´disponivel´) then // checando um campo na tabela begin Canvas.Font.Style:=[fsBold]; //coloca negrito Canvas.Font.Color:= FCorFontSelected; //defini a cor do texto Canvas.Brush.Color:=FCorSelected; // define uma cor de fundo canvas.FillRect(Rect); // pinta a célula -> não altere aqui DefaultDrawDataCell(rect,Column.Field,State); //não altere aqui end; end;
Seria algo mais ou menos assim, para pintar apenas a celula selecionada
Gostei + 0
27/11/2008
Cleiflavio
Tenho um DBgrid com os campos CAIXA, DATA, HORA e STATUS
eu tenho varios registro e eu queria que quando abrisse o DBgrid aparecesse no campo STATUS a diferença de cor entre DISPONIVEL e INDISPONIVEL que quando for DIsponivel ficasse azul e quando fosse Indisponivel ficasse Vermelho mas eu queria que somente essa campo ficasse assim e o resto fique normal.
Teria como ?
Gostei + 0
27/11/2008
Pestana_
if Column.Field = seuDataSetSTATUS then begin if AnsiUpperCase(seuDataSetSTATUS.AsString) = ´DISPONIVEL´ then dbGrid1.Canvas.Font.Color := clBlue else dbGrid1.Canvas.Font.Color := clRed; dbGrid1.DefaultDrawDataCell(rect, Column.Field, state); end;
troque o nome do seu dataSet e o dbGrid.
espero ter ajudado!
Gostei + 0
27/11/2008
Pestana_
Gostei + 0
27/11/2008
Cleiflavio
Muito Obrigadoooo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)