Сортировка DBGrid по щелчку на столбце
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;
Комментарии