我找一段关于DBGrid标题排序的例子,不知这里面是不是对的,不明白
qryShow.Sort:=fieldname;
这一句中的qryshow是什么东西?初上手,如果问的可笑,就请你在开心的同时,帮帮我,好吗?(其中的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;

解决方案 »

  1.   

    qryShow 应该是一个TQuery或者是TADOQuery类的控件
      

  2.   

    procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    var
    lastcolumn:integer;
    temp:string;
    qusp:tadoquery;
    begin
    lastcolumn:=dbgrid1.Columns.Count;
    if column.Index<>int then
    begin
      if int<>100 then
    dbgrid1.Columns[int].Title.Caption:=copy(dbgrid1.Columns[int].Title.Caption,1,length(dbgrid1.Columns[int].Title.Caption)-2);
      if pos('↓',column.Title.Caption)>0 then
      temp:=copy(column.Title.Caption,1,length(column.Title.Caption)-2);
      if column.Index<>lastcolumn then
         begin
           int:=column.Index;
           adoquery1.SQL.Clear;
           adoquery1.SQL.Add('select top 100 * from product order by '+column.Title.Caption+' DESC');
           adoquery1.ExecSQL;
           adoquery1.Active:=true;
           column.Title.Caption:=column.Title.Caption+'↓' ;
         end ;
    end;
    //上面是測試好的代碼---------------------
    end;
      

  3.   

    procedure TfmPlayVideo.DBGrid1TitleClick(Column: TColumn);var
      DataSet: TDataSet;
    begin
      {点击标题栏,排序}     
       DataSet := Column.Field.DataSet;
      if DataSet is TCustomADODataSet then
      with TCustomADODataSet(DataSet) do
      begin
        if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort) = 0) then
           begin
             Sort := Column.Field.FieldName + ' DESC';
           end
        else
           begin
             Sort := Column.Field.FieldName + ' ASC';
           end;
      end;
    end;
      

  4.   

    Procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    Begin
      ADOQuery1.Sort := Column.FieldName;
      ADOquery1.Filtered := True;
    End;
      

  5.   

    var  SortString:String;
    begin
      if b then  //b全局变量
        begin
         SortString:= Column.FieldName+ ' ASC';
         b:=False;
        end
      else
       begin
         SortString:= Column.FieldName+ ' DESC';
         b:=True;
       end;  TADODataSet(TDbGridEh(Sender).DataSource.DataSet).Sort:=SortString;
      

  6.   

    更正:Procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    var  SortString:String;
    begin
      if b then  //b全局变量
        begin
         SortString:= Column.FieldName+ ' ASC';
         b:=False;
        end
      else
       begin
         SortString:= Column.FieldName+ ' DESC';
         b:=True;
       end;  TADODataSet(TDbGrid(Sender).DataSource.DataSet).Sort:=SortString;
    end;