掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
カスタムソートをクラス内だけで行うには? (ID:4178)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
TListViewなどのソートとは違うみたいですね。TListViewならば、LParamを渡せるのですが。 StringListのソートですが、1ユニット1関数にすればできます。 単純な例ですが、細かいところは修正してください。 # こんな大がかりでなくてもできそうですが・・・ unit uStringsSort; interface uses classes; type TStringsSort=class; TSortCompare=procedure( Sender: TStringsSort; List: TStringList; Index1, Index2: Integer; var Compare: Integer) of object; TStringsSort=class private FOnCompare: TSortCompare; public property OnCompare: TSortCompare read FOnCompare write FOnCompare; end; function Sort(List: TStringList; Index1, Index2: Integer): Integer; var StringsSort: TStringsSort; implementation function Sort(List: TStringList; Index1, Index2: Integer): Integer; begin if List[Index1] < List[Index2] then Result := -1 else if List[Index1] > List[Index2] then Result := 1 else Result := 0; if Assigned(StringsSort.OnCompare) then begin StringsSort.OnCompare(StringsSort, List, Index1, Index2, Result); end; end; initialization StringsSort := TStringsSort.Create; StringsSort.OnCompare := nil; finalization StringsSort.Free; end. 自前で作った方が、(処理速度的にも)早いと思いますよ。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.