DBGrid - colocando imagem no título da gride |
Top Previous Next |
|
type TTesteGrid = class(TCustomGrid); // antes da declaração do TForm
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var Bmp : TBitMap;
function GetColsWidth: Integer; var I : Integer; begin Result := 0; for I := 0 to Column.Index do Result := Result + TDBGrid(Sender).Columns.Items[I].Width;
Result := Result + 10 + (Column.Index); end; begin //Aqui fazemos o acesso aos membros protegidos da classe TDBGrid with TTesteGrid(Sender) do begin Canvas.Brush.Style := bsClear; //Aqui detectamos se a coluna que está sendo desenhada é a que foi clicada if Column.Index = 2 then begin //Criamos a variável Bmp Bmp:= TBitMap.Create;
with Bmp do begin //configuramos que a cor transparente será branco TransparentColor := clWhite; Transparent := True; TransparentMode := tmAuto end;
try //Checamos se a variável Ordem está em branco // if Length(Ordem) = 0 then //Se está em branco, é ordem crecente então passamos // à variável Bmp a segunda figura do ImageList1 ImageList1.GetBitmap(1, Bmp); // else // se não passamos a primeira // 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 else //Se não é a coluna clicada que está sendo desenhada //então usamos o método padrão de desenho do título da coluna DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end; |