Desenho no DBGrid indicando ordenamento
em vários aplicativos quando clicamos em uma coluna de um DBGrid os registros são ordenados. até aí tud bem, consigo fazer.
mas como fazer para exibir um triangulo para cima ou para baixo no título do DBGrid quando a coluna é ordenado?
mas como fazer para exibir um triangulo para cima ou para baixo no título do DBGrid quando a coluna é ordenado?
Raserafim
Curtidas 0
Respostas
Anorex
19/08/2007
uso essa ordenação tmb. só q não coloco um triângulo. eu coloco o título da coluna em negrito. se conseguir colocar o triângulo gostaria de saber como fazer...
GOSTEI 0
Adriano Santos
19/08/2007
Colegas,
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´]
[/quote:0055068aa1]
[*:0055068aa1]4. No evento onDrawColumnCell do DBGrid digite o código abaixo:
[quote:0055068aa1=´Declaração do Type´]
[/quote:0055068aa1]
[/list:u:0055068aa1]
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
Raserafim
19/08/2007
ainda não testei,
mas, desde já, valeu pela dica
mas, desde já, valeu pela dica
GOSTEI 0