定义一个全局变量
var blOrder :Boolean = False;
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var Sql:String;
    sOrder :String; 
begin
  if blOrder then
  begin
    sOrder := 'DESC';
    blOrder := False;
  end
  else
  begin
    sOrder := '';
    blOrder := True;
  end;
  Sql := 'SELECT * FROM Table ORDER BY '+
        Column.FieldName +' '+sOrder;
end;

解决方案 »

  1.   

    listview的排序
    //排序的回调函数
    function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
    var txt1,txt2 : string;
    begin
      if ParamSort <> 0 then begin
          txt1 := Item1.SubItems.Strings[ParamSort - 1];
          txt2 := Item2.SubItems.Strings[ParamSort - 1];      if m_bSort then begin //这个变量来控制正反排序
            Result := CompareText(txt1,txt2);
          end else begin
            Result := -CompareText(txt1,txt2);
          end;
      end else begin
          if m_bSort then begin
            Result := CompareText(Item1.Caption,Item2.Caption);
          end else begin
            Result := -CompareText(Item1.Caption,Item2.Caption);
          end;
      end;
    end;procedure TFmSearch.ListViewSearchResultColumnClick(Sender: TObject;
      Column: TListColumn);
    begin
      ListViewSearchResult.CustomSort(@CustomSortProc, Column.Index);
      m_bSort := not m_bSort;
    end;