ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Delphi XE 3: Problema ao passar o mouse no Título Grid

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
AliceString
Novato
Novato


Registrado: Segunda-Feira, 15 de Mai de 2017
Mensagens: 2

MensagemEnviada: Seg Mai 15, 2017 3:37 pm    Assunto: Delphi XE 3: Problema ao passar o mouse no Título Grid Responder com Citação

Ao passar o mouse por cima do título da coluna do grid, o texto escrito no título some,
ou seja, vai para trás do título da coluna.
Preciso escrever os títulos das colunas do grid, utilizando
o TCanvas do Grid.

O grid tem o evento OnTitleClick.

No delphi 7, o problema não ocorre e no delphi XE3,
só ocorre quando a propriedade dgTitleClick = True.
Quando deixo "False" o problema não ocorre, mas precisa ser
"True" para chamar o evento.

Os títulos também sumiam quando o TForm era maximizado e para resolver,
chamei o evento FormResize e codifiquei o seguinte:

grid1.Refresh; ou grid1.Repaint;

Ao fazer isso, os títulos voltaram a aparecer. Tentei fazer isso
nos eventos de mouse do grid, mas não adiantou.

Segue código abaixo:


unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Graphics, Controls, Forms, Dialogs, Data.DB, Datasnap.DBClient,
Grids, DBGrids, Types, StdCtrls;

type
TAccessDBGrid = class(TCustomGrid);

type
TForm1 = class(TForm)
DataSource1: TDataSource;
grid1: TDBGrid;
cdsTabela: TClientDataSet;
cdsTabelacodigo_1: TIntegerField;
cdsTabelacodigo_2: TIntegerField;
procedure grid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure grid1TitleClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
cdsTabela.CreateDataSet;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
grid1.Refresh;
end;

procedure TForm1.grid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
S1 : AnsiString;
begin
with TAccessDBGrid(grid1) do
begin
RowHeights[0] := 29;
Canvas.Brush.Color := clBtnFace;
case Column.Index of
0: begin
Column.Title.Caption := '';
S1 := 'Código 1';
end;
1: begin
Column.Title.Caption := '';
S1 := 'Código 2';
end;
end;
TDBGrid(Sender).Canvas.Font.Color:= clBlack;
//Escrevendo o Título
Canvas.TextOut(Rect.Left + 3, 19, AnsiString(S1));
end;
inherited;
end;

procedure TForm1.grid1TitleClick(Column: TColumn);
begin
ShowMessage('Title Click! ');
end;

end.

Obs: Versão do SO: Windows 7
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB