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

(Resolvido) Como saber? Cor de uma célula stringgrid?


Mario Lopes

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0

Não é fácil amigo

Veja a minha situação:

function GetCorCell(calendarGrid: TStringGrid; Coluna,
Linha: Integer): TColor; 
var 
R : TRect; 
Cor : TColor; 
begin 
R := calendargrid.CellRect(Coluna, Linha); 
Result := calendargrid.Canvas.Pixels[R.Left + 2, R.Top + 2];
showmessage(colortostring(result));
end;
Agora no evento selectcell chamo
getcorcell(calendargrid,acol,arow);

A minha grid chama-se calendargrid mas obtenho sempre o mesmo resultado clwhite e uma das células onde clico está com cor vermelha.

Link para o comentário
Compartilhar em outros sites

  • 0

amigo, tá facil...

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetCorCell(Grid: TStringGrid; Coluna,
Linha: Integer): TColor; 
var 
   R : TRect;
   Cor : TColor;
begin
   R := Grid.CellRect(Coluna, Linha);
   Result := Grid.Canvas.Pixels[R.Left + 2, R.Top + 2];
   showmessage(colortostring(result));
end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
    GetCorCell(StringGrid1,ACol, ARow);
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
   // colorir uma celula
   if gdSelected in State then
      StringGrid1.Canvas.Brush.Color:= clGreen; //Aqui você coloca a cor de desejar.

   StringGrid1.Canvas.FillRect(Rect); // redesenha a celula
   StringGrid1.Canvas.TextOut(Rect.Left+3,Rect.Top+2,StringGrid1.Cells[acol,arow]);

end;

end.

Nesse exemplo, voce clica numa celula para colorir ... se clicar novamente em cima dela, voce tera como resultado da função a cor atual da celula

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
amigo, tá facil...

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetCorCell(Grid: TStringGrid; Coluna,
Linha: Integer): TColor; 
var 
   R : TRect;
   Cor : TColor;
begin
   R := Grid.CellRect(Coluna, Linha);
   Result := Grid.Canvas.Pixels[R.Left + 2, R.Top + 2];
   showmessage(colortostring(result));
end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
    GetCorCell(StringGrid1,ACol, ARow);
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
   // colorir uma celula
   if gdSelected in State then
      StringGrid1.Canvas.Brush.Color:= clGreen; //Aqui você coloca a cor de desejar.

   StringGrid1.Canvas.FillRect(Rect); // redesenha a celula
   StringGrid1.Canvas.TextOut(Rect.Left+3,Rect.Top+2,StringGrid1.Cells[acol,arow]);

end;

end.

Nesse exemplo, voce clica numa celula para colorir ... se clicar novamente em cima dela, voce tera como resultado da função a cor atual da celula

abraço

Valeu amigo, 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
      652k
×
×
  • Criar Novo...