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

Cor da seleção do StringGrid (de azul para verde)


GuiCorTei

Pergunta

9 respostass a esta questão

Posts Recomendados

  • 0

exemplo:

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

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

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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?

Link para o comentário
Compartilhar em outros sites

  • 0

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

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...