Здравствуйте! Есть Delphi7 и обычный DBGrid, который сортируется по клику на заголовок:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
f: string;
begin
ADOQuery1.DisableControls;
f := Column.FieldName;
if ColumnIdx = Column.Index then
if OrderbY = ' ASC' then OrderbY := ' DESC' else OrderbY := ' ASC'
else OrderbY := ' ASC';
ADOQuery1.Sort := '[' + f + ']' + OrderbY;
ColumnIdx := Column.Index;
ADOQuery1.EnableControls;
end; // DBGrid1TitleClick
Перекрыл
DrawCell type TDBGrid = class(DBGrids.TDBGrid)
protected
procedure DrawCell (ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
и символ треугольника для сортировки вывожу через
Image:
procedure TDBGrid.DrawCell (ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
...
if (ARow = 0) and (ACol = ColumnIdx) then
if OrderbY = ' ASC' then
Canvas.Draw(ARect.Right - 11, ARect.Top + 4, Form1.img_asc.Picture.Bitmap)
else
Canvas.Draw(ARect.Right - 11, ARect.Top + 4, Form1.img_desc.Picture.Bitmap);
end; // DrawCell

Есть какой-нибудь более лучший способ отображать эти треугольнички, чем через Image?