|
Usuários |
|
208 Usuários Online
|
|
[Dicas]
Mudar a cor do ítem selecionado do DBGrid |
Publicado por ActiveDelphi : Quarta, Fevereiro 08, 2006 - 11:33 GMT-3 (10122 leituras)
4 Comentários Enviar para um amigo Versão para impressão
|
Uma dica simples que muita gente procura, todos sabem que por padrão a linha (registro) selecionada do DBGrid fica na cor padrão do windows. Agora vamos ver como modificar...
Uma dica simples
que muita gente procura, todos sabem que por padrão a linha (registro)
selecionada do DBGrid fica na cor padrão do windows. Agora vamos ver como
modificar.
Faça uma conexão com um banco de dados qualquer, com o seu
componente de acesso preferido e ligue-o a um DBGrid para que possamos listar os
dados nele. No exemplo, estou utilizando os componentes da palheta IBX.
Primeiro vamos criar um objeto TAuxDBGrid descendente da
classe: TDBGrid;
Ex.: TAuxDBGrid = class(TDBGrid);
Agora vamos ao que interessa:
Evento onDrawColumnCell do DBGrid.
{ DataLink é uma propriedade protegida da Classe TCustomDBGrid, desta forma
podemos acessar assim: TAuxDBGrid(DBGrid1).DataLink.ActiveRecord passando ao
objeto TAuxDBGrid o objeto DBGrid como parâmetro. Da mesma forma pegamos sua
propriedade row, ou seja, a linha que está o foco no momento; }
if (TAuxDBGrid(DBGrid1).DataLink.ActiveRecord +
1 = TAuxDBGrid(DBGrid1).Row) or (gdSelected in State) then
begin
DBGrid1.Canvas.Brush.Color := clSkyBlue;
DBGrid1.Canvas.Font.Style := DBGrid1.Canvas.Font.Style + [fsBold];
DBGrid1.Canvas.Font.Color := clRed;
end;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString);
Como ficou a Unit:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, IBCustomDataSet, IBTable, IBDatabase, Grids, DBGrids;
type
TAuxDBGrid = class(TDBGrid);
TForm1 = class(TForm)
DBGrid1: TDBGrid;
IBTransaction1: TIBTransaction;
IBDatabase1: TIBDatabase;
DataSource1: TDataSource;
IBTable1: TIBTable;
IBTable1CODIGO: TIntegerField;
IBTable1RAZAO: TIBStringField;
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (TAuxDBGrid(DBGrid1).DataLink.ActiveRecord + 1 =
TAuxDBGrid(DBGrid1).Row) or (gdSelected in State) then
begin
DBGrid1.Canvas.Brush.Color := clSkyBlue;
DBGrid1.Canvas.Font.Style := DBGrid1.Canvas.Font.Style + [fsBold];
DBGrid1.Canvas.Font.Color := clRed;
end;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString);
end;
end.
Abraços.
T+
Clique aqui para fazer o download do exemplo:
|
|
Comentários | |
| | Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos. |
por: brasil.rodrigo : Mar 06, 2006 - 05:33 (Informações sobre o membro | Enviar uma mensagem)
http://
|
Utilizando o comando,
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString)
ele retornara todo os dados em modo texto, os float, numerics e etc, perdem a sua formatação.
Utilizando-se o codigo
DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State);
Ele retorna os dados em sem mexer no formato. Mas o restante da dica é otimo, parabéns.
|
por: paulinhofeix : Mai 13, 2006 - 11:00 (Informações sobre o membro | Enviar uma mensagem)
|
Bom Dia
Gostei da Materia só que tem uma pequena questão que para mim não da certo.
a parte de numeros Ex: 50,30 teria que sair todos assim mais tem registro que sai tipo 50,351250021, sai muitos desimais.
o que eu faço para os numeros sairem todos desta forma 50,30
e-mail: paulinhofeix@gmail.com
|
por: tiago.accon : Jun 08, 2006 - 04:03 (Informações sobre o membro | Enviar uma mensagem)
http://www.tiagorocha.brihost.com.br
|
Realmente é um artigo muito interessante, mas no final cometeu um deslize pois todos os registros que não são literais perdem suas caracteristicas, e que tb foi muito bem resolvido pelo nosso colega no comentáio acima, juntando os dois temos um artigo e tanto. Parabens !!
Tiago.
|
|
|
Edição 112 |
|
|
50 Programas Fontes |
|
|
Produtos |
|
|