Fórum Desenho no DBGrid indicando ordenamento #344704
19/08/2007
0
mas como fazer para exibir um triangulo para cima ou para baixo no título do DBGrid quando a coluna é ordenado?
Raserafim
Curtir tópico
+ 0Posts
19/08/2007
Anorex
Gostei + 0
20/08/2007
Adriano Santos
Eu uso um macete aqui. Não está completa a dica, mas só dar uma adaptada.
[list:0055068aa1]
[*:0055068aa1]1. Coloque um TImageList na tela.
[*:0055068aa1]2. Adicione 1 imagem no TImageList.
[*:0055068aa1]3. Declare uma nova classe antes do Type do Form, assim:
[quote:0055068aa1=´Declaração do Type´]
{Classe responsável por obter novas(membros protegidos) propriedades do DBGrid}
type
TDBGrid = class(DBGrids.TDBGrid);
[/quote:0055068aa1]
[*:0055068aa1]4. No evento onDrawColumnCell do DBGrid digite o código abaixo:
[quote:0055068aa1=´Declaração do Type´]
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;
[/quote:0055068aa1]
[/list:u:0055068aa1]
Gostei + 0
29/08/2007
Raserafim
mas, desde já, valeu pela dica
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)