關鍵是用DBGrid的事件 OnTitleClick
首先判斷單擊是哪一列,
i:=Column.Index;
然後要確定是哪個字段
Field:=DBGrid1.Columns[i].FIEldName+' ASC';
最後進行排序:
qryWork.Sort:=FIEld;
上面僅僅是進行升序排列,若要添加降序排列,則要用' DESC'
若要單擊後,升序,再單擊,降序.....
則要用到一個奇偶判斷
我的一個例子
(其中的bSort:Boolean,在FormShow的時候初始化)
procedure TfmPlayVideo.DBGrid1TitleClick(Column: TColumn);
var
i:integer;
fIEldname:string;
begin//排序
i:=Column.Index;
if bSort then
begin
fieldname:=DBGrid1.Columns[i].FIEldName+' ASC';
bSort:=False;
end
else
begin
fieldname:=DBGrid1.Columns[i].FIEldName+' DESC';
bSort:=True;
end;
qryShow.Sort:=fIEldname;
end;