Implement using dbgrideh,
To have possiblity to sort data in DataSet after sorting markers will be changed. You have to add dlgAutoSortMarkingEh to OptionsEh, set TColumnEh.Title.TitleButton to True for required columns, keep OnSortMarkingChanged event empty, add one of the units EhLib ... ( EhLibADO, EhLibBDE, EhLibCDS) to 'uses' clause of any unit of your project. Now EhLib have objects to sort data in TClientDataSet, TQuery and TADOQuery. you have to write and register you own object to sort data in DataSet that not present in This List.
EHLIB Software