Array
(
)

Imagem no Titulo - Dbgrid

Pedih
   - 06 dez 2005

olá, como colocar uma imagem no titulo do dbgrid ?

tipo:
qdo se esta no WindowsExplorer, e se clica no titulo na relacao de (arquivos, pastas, ect), e o mesmo é ordenado, aparecendo uma imagem de uma seta para baixou ou para cima.


Obrigado., by.


Adriano Santos
   - 14 dez 2005

Peguei seu tópico por acaso aqui e tinha sua solução.
Coloca um TImageList na tela e testa o exemplo que mandei.

Declare a Type abaixo do uses da unit.

#Código


{Classe responsável por obter novas(membros protegidos) propriedades do DBGrid}
type
TDBGrid = class(DBGrids.TDBGrid);




#Código

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
Bmp: TBitMap;
R: TRect;
function GetColsWidth: Integer;
var
I: Integer;
begin
Result := 0;
for I := 0 to Column.Index do
begin
Result := Result + TDBGrid(Sender).Columns.Items[I].Width;
end;
Result := Result + 10 + (Column.Index);
end;
begin
{Aqui fazemos o acesso aos membros protegidos da classe TDBGrid}
with TDBGrid(Sender) do
begin
try
Bmp := TBitMap.Create;
with Bmp do
begin
{configuramos que a cor transparente será branco}
TransparentColor := clWhite;
Transparent := True;
TransparentMode := tmAuto
end;
ImageList1.GetBitmap(0, Bmp);
{Detectamos se a altura do título é suficiente para por a imagem}
if RowHeights[0] < Bmp.Height + 4 then
RowHeights[0] := Bmp.Height + 4;

{Desenhamos a imagem no Título}
Canvas.Draw((GetColsWidth - Bmp.Width), (RowHeights[0] - Bmp.Height) div 2,
Bmp);
finally
{Liberamos a variável Bmp da memória}
Bmp.Free;
end;
end;
end;