Ajuda - Busca - Membros - Calendário
Versão Completa: Cor da seleção do StringGrid (de azul para verde)
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
GuiCorTei
O StringGrid, por Default possui a cor da seleção da célula como AZUL...
tem como mudar para verde??

não quero pintar o FUNDO da celula, quero pintar o quadrado que fica em cima, quero pintar a SELECÃO, exemplo:




é possível?
Jhonas
mude a propriedade FixedColor do StringGrid para clYellow ou outra cor que quiser

abraço
GuiCorTei
QUOTE(Jhonas @ 11/02/2011 - 11:53) *
mude a propriedade FixedColor do StringGrid para clYellow ou outra cor que quiser

abraço


isso só pinta as colunas FIXED, e também só se a propriedade DrawingStyle estiver em gdsClassic

o que eu quero é pintar esse quadrado azul para verde, que significa a SELEÇÃO DA CELULA
Jhonas
exemplo:

OBS: voce deve mudar o código para a sua necessidade

CODE
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1DrawCell(Sender: TObject; Col, Row:Longint;Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}


procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row:Longint;Rect: TRect; State: TGridDrawState);
  {***}
  procedure DrawCellText;
  var
    Text: array[0..255] of Char;
  begin
    StrPCopy( Text, StringGrid1.Cells[ Col, Row ] );
    ExtTextOut( StringGrid1.Canvas.Handle, Rect.Left + 2, Rect.Top + 2,
                ETO_CLIPPED or ETO_OPAQUE, @Rect, Text, StrLen( Text ),
nil );
  end;
  {***}
  procedure DrawCellColor( CorFundo, CorLetra : TColor );
  var
    S1, S2 : TColor;
  begin
    with StringGrid1.Canvas do
    begin
      S1 := Brush.Color;
      S2 := Font.Color;
      try
        {pinta o fundo com a cor desejada}
        Brush.Color := CorFundo;
        FillRect( Rect );
        {pinta as letras com a cor desejada}
        Font.Color := CorLetra;
        DrawCellText;
      finally
        {restaura as cores}
        Brush.Color := S1;
        Font.Color := S2;
      end;{try}
    end;{with}
  end;
  {***}
begin
  if ( Row = 2 ) and ( Col = 3 ) then
    DrawCellColor( clYellow, clWindowText );
end;

end.


abraço
GuiCorTei
nada ver...

QUOTE("EU")
não quero pintar o FUNDO da celula, quero pintar o quadrado que fica em cima, quero pintar a SELECÃO, exemplo:
Gustavo_Sid
Olá amigo.

Digite isso no evento OnDrawCell do StringGrid:

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

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


Abraços.
GuiCorTei
acho que o que eu desejo está na ordem da Edição de Componentes...
pois eu não desejo pintar o fundo da celula, não quero a celula pintada OPACAMENTE...

eu queria mudar o DESENHO AZUL, da seleção, que é com os cantos arredondados e com um efeito meio degrade, para a cor verde, mas acho q o componente não possui essa opção...

mas esse DESENHO AZUL, deve estar em algum lugar no arquivo que corresponde ao componente TStringGrid que é integrado ao Delphi....

como eu posso edita-lo, e mudar o DESENHO AZUL?... e colocar por exemplo, uma foto com degrade, no lugar???

ou como posso criar outro componente com base no Tstringgrid?
Jhonas
veja a partir do capitulo 6 dessa apostila

http://www.matorres.com.br/portal/index.ph...s&Itemid=54

abraço
GuiCorTei
Jhonas
o que voce esta querendo, somente se voce criar o seu proprio componente derivado do stringgrid

por isso passei a apostila ... lá ensina como modificar as propriedades do componente

OBS: se voce estiver usando skin o stringgrid vai ficar com a cor padrão

voce pode procurar por um componente com essa propriedade

http://www.torry.net/pages.php?s=73

abraço
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.