Внешний вид сайта:

Сортировка DBGrid по щелчку на столбце

Как сортировать набор данных по щелчку мыши? Очень просто: У нас имеется TQuery, TDataSource и TDBGrid на форме, связанные вместе. QuerySQL — глобальная строка, которая содержит инструкцию SQL.
begin 
  QuerySQL := 'SELECT * FROM Customer.DB'; 
  Query1.SQL.Add(QuerySQL); 
  Query1.Open; 
end;

В событии OnTitleClick DBGrid мы только добавляем ORDER BY к SQL и обновляем запрос.

procedure TForm1.DBGrid1TitleClick(Column: TColumn); 
begin 
  witzh Query1 do 
  begin 
    DisableControls; 
    Close; 
    SQL.Clear; 
    SQL.Add(QuerySQL); 
    SQL.Add('ORDER BY ' + Column.FieldName); 
    Open; 
    // Восстановить настройки заголовка
    DBGrid1.Columns.RestoreDefaults; 
    Column.Title.Font.Color := clBlue; 
    EnableControls; 
  end; 
end;

Рисуем стрелки на заголовке:

procedure PaintArrowUp(Canvas: TCanvas; var Rect: TRect); 
var 
  SaveCol : TColor; 
begin 
  with Canvas do begin 
    SaveCol:=Pen.Color; 
    Pen.Color:=clGray; 
    MoveTo(Rect.Right-10, Rect.Top+11); 
    LineTo(Rect.Right-7, Rect.Top+5); 
    Pen.Color:=clWhite; 
    MoveTo(Rect.Right-6, Rect.Top+5); 
    LineTo(Rect.Right-3, Rect.Top+11); 
    LineTo(Rect.Right-10, Rect.Top+11); 
    Pen.Color:=SaveCol; 
  end; 
end;


procedure PaintArrowDown(Canvas: TCanvas; var Rect: TRect); 
var 
  APolyLine: Array[0..2] of TPoint; 
  SaveCol : TColor; 
begin 
  with Canvas do begin 
    SaveCol:=Pen.Color; 
    Pen.Color:=clGray; 
    APolyLine[0]:=Point(Rect.Right-3, Rect.Top+5); 
    APolyLine[1]:=Point(Rect.Right-10, Rect.Top+5); 
    APolyLine[2]:=Point(Rect.Right-7, Rect.Top+11); 
    PolyLine(APolyLine); 
    Pen.Color:=clWhite; 
    MoveTo(Rect.Right-6, Rect.Top+11); 
    LineTo(Rect.Right-3, Rect.Top+5); 
    Pen.Color:=SaveCol; 
  end; 
end; 

Комментарии

Нет комментариев. Ваш будет первым!