用鼠标单击他的某一字段,
字段下的数据就可按升序或降序排列procedure TForm1.DBGridehTitleClick(Column: TColumn);
var
  SortStr:string;
begin
   SortStr:=Column.Field.FieldName+' ASC';
   adoqeuery1.Sort :=SortStr;
end; 
//这种方法是不行的。case Column.Title.SortMarker of
    smNoneEh: Column.Title.SortMarker := smDownEh;
    smDownEh: Column.Title.SortMarker := smUpEh;
    smUpEh: Column.Title.SortMarker := smNoneEh;
end;在我的OnSortMarkingChanged事件中:
ShowMessage('er changed!');  
添加Order By语句 //怎样添加才能起作用我的DBGridEh属性页中,OptionsEh里设置:
dghautosorting=True;
 TitleButton := True 尽量详细,详细的才可以得分。

解决方案 »

  1.   

    dbgrideh的DEMO说得很清楚了呀!照着做呀!
      

  2.   

    www.51delphi.com下载~
    或者你可以看看这帖子!
    http://expert.csdn.net/Expert/topic/944/944798.xml?temp=.8944208
    这帖子真的很不错!有说明!
      

  3.   

    谢谢 winsock2000(winsock)
    www.51delphi.com我用的就是这个,没有例子。例子里也没说。http://expert.csdn.net/Expert/topic/944/944798.xml?temp=.8944208
    里用的。 active:=false 再open
    这样子不行,浪费资源。能过adoquery1.Sort :=SortStr;怎样来写上面的语句
      

  4.   

    var
      SortStr:string;
    begin SortStr:='';
    if Column.Title.SortMarker=smDownEh Then
     Begin
     SortStr:=Column.Field.FieldName+' DESC';
     adoquery1.Sort :=SortStr
     end else
     begin
      SortStr:=Column.Field.FieldName+' ASC';
     adoquery1.Sort :=SortStr
     end;
    一定行。