Pra desenhar linhas inteiras, segue uma rotina que verifica se existe o campo e muda a cor da linha conforme o contéúdo dele. Procedure DesenhaGrade( grdDados: TDBGrid; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); // Desenha uma grade desenhada Begin If grdDados.Canvas.Brush.Color <> clHighlight then Begin If (grdDados.DataSource.DataSet.FieldList.IndexOf('SITUACAO') <> -1) then Begin If grdDados.DataSource.DataSet.FieldByName('SITUACAO').asString = 'Em Vendas' then grdDados.Canvas.Font.Color:= clBlack else If grdDados.DataSource.DataSet.FieldByName('SITUACAO').asString = 'Confirmada' then grdDados.Canvas.Font.Color:= clBlack else If grdDados.DataSource.DataSet.FieldByName('SITUACAO').asString = 'Vencida' then grdDados.Canvas.Font.Color:= clRed else If grdDados.DataSource.DataSet.FieldByName('SITUACAO').asString = 'A Confirmar' then grdDados.Canvas.Font.Color:= clRed else If grdDados.DataSource.DataSet.FieldByName('SITUACAO').asString = 'Inválido' then grdDados.Canvas.Font.Color:= clRed else If grdDados.DataSource.DataSet.FieldByName('SITUACAO').asString = 'Válido' then grdDados.Canvas.Font.Color:= clBlack else If grdDados.DataSource.DataSet.FieldByName('SITUACAO').asString = 'Cancelada' then grdDados.Canvas.Font.Color:= clGreen else grdDados.Canvas.Font.Color:= clBlue; end; If (grdDados.DataSource.DataSet.FieldList.IndexOf('DESTAQUEWEB') <> -1) then Begin If grdDados.DataSource.DataSet.FieldByName('DESTAQUEWEB').asBoolean then grdDados.Canvas.Brush.Color := $00C4FFFF; end; grdDados.Canvas.FillRect(Rect); grdDados.DefaultDrawDataCell(Rect, grdDados.columns[datacol].field, State); end; end;
Júlio Abdala Cleiton <[EMAIL PROTECTED]> escreveu: Oi Anderson... O que você me passou funcinou perfeitamente. Muito obrigado pela colaboração. No entanto, tem mais um detalhezinho: no exemplo que você passou fica pintado apenas uma célula da grid. Eu gostaria que fiasse pintada todas as colunas daquela linha e nao apenas a primeira coluna. É possível fazer assim? ----- Original Message ----- From: "Anderson Carlos" <[EMAIL PROTECTED]> To: <delphi-br@yahoogrupos.com.br> Sent: Friday, January 20, 2006 10:22 AM Subject: Re: [delphi-br] Mudar Cor Da Célula Da Gri d?= É possível sim Você pode fazer assim Exemplo: procedure TForm1.GridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin Grid.Canvas.font.Color:= clBlack; //aqui é definida a cor da fonte if gdSelected in State then begin with Grid.Canvas do begin Brush.Color:=clMoneyGreen; //aqui é definida a cor do fundo FillRect(Rect); end; end; Grid.DefaultDrawDataCell(Rect, Grid.columns[datacol].field, State); end; Cleiton <[EMAIL PROTECTED]> escreveu: Olá pessoal ... Faço uma pesquisa em um DBGrid usando "locate" no envento OnChange do componente edit. Gostaria que no momento em que o locate encontra o valor pesquisado, que mudasse a cor da célula do DBgrid que passa a ficar em foco no momento da pesquisa. É possível fazer isso? E se for, como deveria fazer? Alguém poderia me ajudar? Desde já agradeço a colaboração de todos. -- Esta mensagem foi verificada pelo sistema de antivírus e acredita-se estar livre de perigo. [As partes desta mensagem que não continham texto foram removidas] -- -- Esta mensagem foi verificada pelo sistema de antivírus e acredita-se estar livre de perigo. -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE --------------------------------- Links do Yahoo! Grupos Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. --------------------------------- Yahoo! doce lar. Faça do Yahoo! sua homepage. --------------------------------- Yahoo! doce lar. Faça do Yahoo! sua homepage. [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html