ShellListViewでソート


とら  2005-07-20 16:14:20  No: 16440

ShellListView で詳細表示(Repot)にしたときに、カラムをクリックして
ソートしたいのですが、どうしたらいいのでしょうか?


ぶる  2005-07-21 00:46:55  No: 16441

他のソート出来るコンポを探す手もあるけど。


長い回答は拒否?  2005-07-21 01:03:50  No: 16442

短い回答なら送信できるけど、長いのは拒否されるみたい。
どのくらいの長さまでならOKなのかな?

テストてすとテストてすと
テストてすとテストてすと
テストてすとテストてすと
テストてすとテストてすと
テストてすとテストてすと
テストてすとテストてすと
テストてすとテストてすと
テストてすとテストてすと
テストてすとテストてすと
テストてすとテストてすと


頑固ひとスジふたスジ  2005-07-21 19:06:01  No: 16443

>ShellListView で詳細表示(Repot)にしたときに、カラムをクリックして
>ソートしたいのですが、どうしたらいいのでしょうか?

ふたスジ: 「ほんま、ソートでけたらエエな〜」
ひとスジ: 「それは、そ〜と〜ムズカシイかも」
ふたスジ: 「おやじギャグ、さぶいで」
ひとスジ: 「アツイ時には おやじギャグで涼しく...なんちゃって」
ふたスジ: 「もっとアツぅなる(~_~;)A  はよ教えてんか」
ひとスジ: 「ソートするには、TShellListViewのソースもチョット書き換えないと...」
ふたスジ: 「ん〜、ならD6 Personalやとダメなん?」
ひとスジ: 「Demos\ShellControls\にあるから、ダイジョウV! 」
ふたスジ: 「ホンマ、スベっとるで」

const
  MAXCOLUMN = 4;
var
  FSortColumnIdx: Integer;
  FSortOrder: array[0..MAXCOLUMN] of Boolean;
     
function CustomShellSortProc(Item1, Item2: Pointer): Integer;
begin
  result := SmallInt(TShellFolder(Item1).ParentShellFolder.CompareIDs(
    FSortColumnIdx, TShellFolder(Item1).RelativeID, TShellFolder(Item2).RelativeID));
  if FSortOrder[FSortColumnIdx] then begin
    result := -result;
  end;
end;

procedure TForm1.ShellListView1ColumnClick(Sender: TObject; Column: TListColumn);
begin
  FSortColumnIdx := Column.Index;
  ShellListView1.FolderList.Sort(CustomShellSortProc);
  ShellListView1.Invalidate;
  FSortOrder[FSortColumnIdx] := not FSortOrder[FSortColumnIdx];
end;

*ShellCtrls.pas 書き換え
{ TShellListView }
  TShellListView = class(TCustomShellListView)
  published
    property FolderList: TList read FFolders;  // 追加
    ...........
  end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加