At first you need to define index for every column that you want to sort:
1w:in IDE
double click your ClientDataSet's IndexDefs property,Add new,set "Name""Fields""DescFields" value
(for example:equal to column name)
2w:in code
with dataset.IndexDefs do
begin
Clear;
with AddIndexDef do
begin
Name:='your column name';
Fields:='your column name';
DescFields:='your column name';
end;
Then write code in DBGridEh OnTitleClick:
case Column.Title.SortMarker of
smNoneEh:
begin
Column.Title.SortMarker := smDownEh;
fTagStateSetDM.cdsData.IndexName:=Column.FieldName;
end;
smDownEh:
begin
Column.Title.SortMarker := smUpEh;
fTagStateSetDM.cdsData.IndexFieldNames:=Column.FieldName;
end;
smUpEh:
begin
Column.Title.SortMarker := smDownEh;
fTagStateSetDM.cdsData.IndexName:=Column.FieldName;
end;
end;