Ir para conteúdo
Fórum Script Brasil
  • 0

DbGrid somente Celula Piscando


Eder

Pergunta

Ola, pessoal,  depois de muitos anos voltei ao forum, rss, novos caminhos profissionais.

Preciso de uma ajudinha, estou meio destreinado no delphi,

Estou usando este código para pintar a célula selecionada no DbGrid, mas precio que além dela pintar que ela "pisque".

Vi vários exemplo na net e no forum mas não consegui chegar nem próximo ao que quero.

Por gentileza, vejam se conseguem me ajudar, segue meu código:

procedure TFormColetas.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
if column.Field.AsString = 'CANCELADA' then
begin
DBGrid1.Canvas.Brush.Color:= clred;
DBGrid1.Canvas.Font.Color:= clblack;
DBGrid1.Canvas.Font.Style:= [fsbold];
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

Abs a todos!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Tem um exemplo que eu coloquei neste post

 

ou exemplo completo

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids, ExtCtrls;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    Query1: TQuery;
    Button1: TButton;
    Timer1: TTimer;
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  posicao : TRect;
  cor : TColor;
implementation

{$R *.dfm}

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if gdSelected in State then
    begin
      With (Sender as TDbGrid).Canvas do
        begin
          Brush.Color := clBlue;
          FillRect(Rect);
          posicao:= Rect;
        end;
    end;

  DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State);

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

  with DbGrid1 do
  begin
     if cor = clWhite then
        begin
           cor := clBlue;
           Canvas.Font.Color := clWhite;
        end
     else
        begin
           cor := clWhite;
           Canvas.Font.Color := clBlack;
        end;

     Canvas.Brush.Color := cor;
     Canvas.TextRect(posicao, posicao.Left + 2, posicao.Top + 2, DBGrid1.SelectedField.Text);
  end;

end;


end.

 

OBS: A celula que voce clicar com o mouse vai ficar piscando ( isso porque a posição de linha e coluna do DBGrid é passado para o timer  )

se a idéia é fazer com que valores de varias celulas fiquem piscando ao mesmo tempo, nesse caso voce deve armazenar em uma matriz todos os valores de posições de linha e coluna onde a celula vai ficar piscando, independente da posição do cursor.

exemplo de armazenamento de posições de linha e coluna do DBGrid

Rect = (Left:274;Top:54;Rigth:352;Bottom:71;TopLeft:(X:274;Y:54);BottomRight:(X:352;Y:71))

voce teria que armazenar em uma matriz o valor de cada Rect, que a condição colocada no evento OnDrawDataCell achar

ou voce pode pesquisar na net para ver se tem componente com essa propriedade.

 

Abraço

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...