Vcl.ComCtrls.TTreeNodes.CustomSort
Delphi
function CustomSort(SortProc: TTVCompare; Data: NativeInt; ARecurse: Boolean = False): Boolean;
C++
bool __fastcall CustomSort(PFNTVCOMPARE SortProc, NativeInt Data, bool ARecurse = false);
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
function | public | Vcl.ComCtrls.pas Vcl.ComCtrls.hpp |
Vcl.ComCtrls | TTreeNodes |
Beschreibung
Sortiert Baumknoten.
Mit CustomSort wird die Knotensortierung bzw. die Umsortierung an- bzw. ausgeschaltet, und zwar anhand einer Vergleichsroutine, die vom Parameter SortProc bestimmt wird.
Der Parameter Data wird an die Vergleichsroutine übergeben. Data wird nicht von der Methode CustomSort und der Standard-Vergleichsroutine nicht verwendet.
Der optionale Parameter ARecurse (Standardwert false) legt fest, dass alle Unterknoten ebenfalls sortiert werden.
Der Rückgabewert von CustomSort gibt den Erfolgsstatus der Sortierung an.
Wenn der Parameter SortProc den Wert nil (Delphi) oder NULL (C++) hat, wird die Standardsortierroutine aufgerufen. Die Standardroutine benutzt für das zugehörige TCustomTreeview-Objekt den Ereignis-Handler OnCompare, wenn er definiert ist. Ist die Ereignisbehandlungsroutine für OnCompare jedoch nicht definiert, werden die Knoten einfach nach ihren Namen sortiert, wobei die Groß-/Kleinschreibung beachtet wird.
Die Vergleichsroutine ist folgendermaßen definiert:
Pascal TTVCompare = function(lParam1, lParam2, lParamSort: Longint): Integer;
C++ typedef int (CALLBACK *TTVCompare)(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
In der Vergleichsroutine beziehen sich die Parameter lParam1 und lParam2 auf zwei Knoten, wenn sie für TTreeNode aufgerufen werden.
Der Parameter lParamSort entspricht dem Wert, der zuvor an den CustomSort-Parameter Data übergeben wurde.
Der Rückgabewert der Vergleichsroutine bezeichnet die relative Sortierreihenfolge von IParam1 und IParam2:
Rückgabewert | Bedeutung |
---|---|
< 0 |
IParam1 kommt vor IParam2 |
0 |
IParam1 und IParam2 sind gleichrangig |
> 0 |
IParam2 kommt vor IParam1 |