Рассмотрим сортировку на клиенте, на примере своего проекта
![](http://digital-flame.ru/wp-content/uploads/2019/05/30-1024x360.jpg)
![](http://digital-flame.ru/wp-content/uploads/2019/05/28-1024x495.jpg)
Для этого, нужно у каждой колонки грида включить параметр Sortable в True
![](http://digital-flame.ru/wp-content/uploads/2019/05/29.jpg)
А также обработать следующее событие грида (на примере FireDAC)
procedure TAdminUsersFrameAll.DBGridColumnSort(Column: TUniDBGridColumn; Direction: Boolean);
begin
if Direction then
qUsers.IndexFieldNames := Column.FieldName
else
qUsers.IndexFieldNames := Column.FieldName + ':D';
end;
У меня FireDAC, и поэтому все работает довольно просто )))