Alterar Cor no DBGrid por Grupo
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
Curtidas 0
Respostas
Tonidavi2004
19/06/2009
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;
GOSTEI 0
Mmcamilo
19/06/2009
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
GOSTEI 0