可以从数据库里面读取数据,window的资源管理器,是通过调用一系列winAPI函数来实现的!

解决方案 »

  1.   

    你可调用WINAPI函数实现,或你把他们成组来实现
      

  2.   

    procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);begin
      ColumnToSort := Column.Index;
      (Sender as TCustomListView).AlphaSort;
    end;
      

  3.   

    netlib(河外孤星)的回答对了一半,应该如下
    在单元文件的头部Private 中声明:
    ColumnToSort:Integer;
    在对以下两个事件编写如下代码
    procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);
    begin
      ColumnToSort := Column.Index;
      (Sender as TCustomListView).AlphaSort;
    end;procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
    var
      ix: Integer;
    begin
      if ColumnToSort = 0 then
        Compare := CompareText(Item1.Caption,Item2.Caption)
      else begin
       ix := ColumnToSort - 1;
       Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
      end;
    end;
      

  4.   

    我再补充楼上的。在Private中声明另一个变量:
      FSortFlag: Boolean;  //用以标识当前排序规则是升序还是降序。
    事件代码这样写:
    procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);
    begin
      ColumnToSort := Column.Index;
      Fsortflag := not Fsortflag;
      (Sender as TCustomListView).AlphaSort;
    end;procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
    var
      ix: Integer;
    begin
      if (FColumnToSort < 0) or (FColumnToSort > (Sender as TListView).Columns.Count) then exit;
      if Fsortflag then
        if FColumnToSort = 0 then
          Compare := CompareText(Item1.Caption,Item2.Caption)
        else begin
         ix := FColumnToSort - 1;
         Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
        end
      else
        if FColumnToSort = 0 then
          Compare := CompareText(Item2.Caption,Item1.Caption)
        else begin
         ix := FColumnToSort - 1;
         Compare := CompareText(Item2.SubItems[ix],Item1.SubItems[ix]);
        end;
    end;