Imagem no Titulo - Dbgrid

06/12/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.


Pedih

Respostas

14/12/2005

Adriano Santos

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.

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




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&93;.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&93; < Bmp.Height + 4 then
        RowHeights&91;0&93; := Bmp.Height + 4;

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



Responder Citar