Fórum Alterar Cor no DBGrid por Grupo #371423
19/06/2009
0
Olá pessoal...
Já procurei aqui no forum, achei vários exemplos, porém, nenhum se relacionava especificamente com a minha dúvida.
Tenho um Grid que retorna o resultado de uma cotação entre vários fornecedores e dependendo do resultado as vezes mais de um fornecedor ganha a cotação em diferentes produtos ou seja;
Fornecedor1 ProdutoX Valor
Fornecedor1 ProdutoY Valor
Fornecedor2 ProdutoZ Valor
Fornecedor3 ProdutoW Valor
Fornecedor3 ProdutoK Valor
Gostaria de saber se alguem tem alguma funcão ou procedimento ou maneira de que quando eu receber este resultado, cada grupo do mesmo fornecedor tivesse uma cor diferente que até poderia ser aleatória ou não no grid.
Exemplo1:
Fornecedor1 ProdutoX Valor (verde)
Fornecedor1 ProdutoY Valor (verde)
Fornecedor2 ProdutoZ Valor (Amarelo)
Fornecedor3 ProdutoW Valor (Azul)
Fornecedor3 ProdutoK Valor (Azul)
ou
Exemplo2:
Fornecedor1 ProdutoX Valor (verde)
Fornecedor1 ProdutoY Valor (verde)
Fornecedor2 ProdutoZ Valor (Amarelo)
Fornecedor3 ProdutoW Valor (Verde)
Fornecedor3 ProdutoK Valor (Verde)
Desde já agradeço!
Márcio M. Camilo
Já procurei aqui no forum, achei vários exemplos, porém, nenhum se relacionava especificamente com a minha dúvida.
Tenho um Grid que retorna o resultado de uma cotação entre vários fornecedores e dependendo do resultado as vezes mais de um fornecedor ganha a cotação em diferentes produtos ou seja;
Fornecedor1 ProdutoX Valor
Fornecedor1 ProdutoY Valor
Fornecedor2 ProdutoZ Valor
Fornecedor3 ProdutoW Valor
Fornecedor3 ProdutoK Valor
Gostaria de saber se alguem tem alguma funcão ou procedimento ou maneira de que quando eu receber este resultado, cada grupo do mesmo fornecedor tivesse uma cor diferente que até poderia ser aleatória ou não no grid.
Exemplo1:
Fornecedor1 ProdutoX Valor (verde)
Fornecedor1 ProdutoY Valor (verde)
Fornecedor2 ProdutoZ Valor (Amarelo)
Fornecedor3 ProdutoW Valor (Azul)
Fornecedor3 ProdutoK Valor (Azul)
ou
Exemplo2:
Fornecedor1 ProdutoX Valor (verde)
Fornecedor1 ProdutoY Valor (verde)
Fornecedor2 ProdutoZ Valor (Amarelo)
Fornecedor3 ProdutoW Valor (Verde)
Fornecedor3 ProdutoK Valor (Verde)
Desde já agradeço!
Márcio M. Camilo
Mmcamilo
Curtir tópico
+ 0
Responder
Posts
19/06/2009
Tonidavi2004
Basta você usar o evento do próprio DbGrid.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DataSource1.DataSet.FieldByName(´Cod_Fornecedor1´).AsInteger = Cod_Fornecedor1 then DBGrid1.Canvas.Brush.Color := clGreen; if DataSource1.DataSet.FieldByName(´Cod_Fornecedor2´).AsInteger = Cod_Fornecedor2 then DBGrid1.Canvas.Brush.Color := clYellow; if DataSource1.DataSet.FieldByName(´Cod_Fornecedor3´).AsInteger = Cod_Fornecedor3 then DBGrid1.Canvas.Brush.Color := clBlue; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;
Responder
Gostei + 0
21/06/2009
Mmcamilo
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DataSource1.DataSet.FieldByName(´Cod_Fornecedor1´).AsInteger = Cod_Fornecedor1 then
DBGrid1.Canvas.Brush.Color := clGreen;
if DataSource1.DataSet.FieldByName(´Cod_Fornecedor2´).AsInteger = Cod_Fornecedor2 then
DBGrid1.Canvas.Brush.Color := clYellow;
if DataSource1.DataSet.FieldByName(´Cod_Fornecedor3´).AsInteger = Cod_Fornecedor3 then
DBGrid1.Canvas.Brush.Color := clBlue;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Obrigado pela dica, porém ainda não foi suficiente, uma vez que não sei o código do fornecedor ganhador da cotação e nem a quantidade de fornecedores que estarão ganhando a cotação.... Se fosse fixo seu exemplo seria satisfatório.
Se alguem ainda tiver mais uma dica, agradeço.
Márcio
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)