15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Сортировка DBGrid по клику на колонке.

Компилятор: Delphi

На форме расположены TQuery, TDatasource и TDbGrid связанные вместе.

QuerySQL, это глобальная строка, которая содержит SQL-выражение.

begin
  QuerySQL := 'SELECT * FROM Customer.DB';
  Query1.SQL.Add(QuerySQL);
  Query1.Open;
end;


В DBGrid в событии OnTitleClick, достаточно добавить ORDER-BY к sql-строке и обновить запрос.

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
  with 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;