TTable 控件怎么实现 DBGrid的单击标题排序

求助:TTable 控件如何实现 DBGrid的单击标题排序
TTable 控件如何实现 DBGrid的单击标题排序,应该是很easy的问题,我是新手,对DELPHI不熟。

------解决方案--------------------
1. 如果你采用ADO,那么这是很简单的:
ADOTable1.Sort:=DBGrid1.Columns[Column.Index].FieldName;



2.在OnTitleClick事件中调用就可以了
Procedure OW_OrderADOGrid(Column: TColumn);
Var
DataSet: TDataSet;
FieldNames:String;
Begin
if not Column.Field.DataSet.Active then abort;
if not (Column.Field.FieldKind in [fkData,fkLookup]) then exit;
DataSet := Column.Field.DataSet;
if Column.Field.Lookup then
FieldNames:= Column.Field.KeyFields
else
FieldNames:=Column.Field.FieldName;

if DataSet is TCustomADODataSet then
with TCustomADODataSet(DataSet) do
begin
if (Pos(FieldNames, Sort) = 1) and (Pos(' DESC', Sort) = 0) then
Sort := FieldNames + ' DESC' else
Sort := FieldNames + ' ASC';
end;
end;

------解决方案--------------------
procedure Tmaterials.DBGrid1TitleClick(Column: TColumn);
var
DataSet: TDataSet;
i: Integer;
TitleStr,tmpStr: String;
begin
Adotable1.Open;
if not Adotable1.Active then exit;
DataSet := Column.Field.DataSet;
if DataSet is TCustomADODataSet then
for i := 0 to DBGrid1.FieldCount - 1 do
begin
//多加一个空格是为了能够实现字符串分割
TitleStr:=DBGrid1.Columns.Items[i].Title.Caption + ' ';
tmpStr := Copy(TitleStr,1,Pos(' ',TitleStr));
DBGrid1.Columns.Items[i].Title.Caption := tmpStr;
end;
with TCustomADODataSet(DataSet) do
begin
if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort) = 0) then
begin
Sort := Column.Field.FieldName + ' DESC';
tmpStr := tmpStr +' ▼';
end
else
begin
Sort := Column.Field.FieldName + ' ASC';
tmpStr := tmpStr + ' ▲';
end;
Column.Title.Caption := tmpStr;
end;
end;
//可以直接使用,,,