Hallo!
Meine Lösung (eh im Prinzip dasselbe).
Vielleich noch ein Hinweis das CompareStr ist Case-Sensitiv, sortiert also groß und kleinbuchstaben ausainander sprich A-Z zuerst, dann kommen erst a-z...
CompareText macht das nicht. Kommt drauf an was du möchtest.
Delphi-Quellcode:
procedure TForm1.TreeView1Compare(Sender: TObject; Node1, Node2: TTreeNode;
Data: Integer; var Compare: Integer);
begin
Compare := 0;
// Kriterium eins
if (Node1.Text[1] = 'X') and (Node2.Text[1] <> 'X') then
Compare := -1
else if (Node2.Text[1] = 'X') and (Node1.Text[1] <> 'X') then
Compare := 1;
// Kriterium zwei, wenn Compare noch 0
if Compare = 0 then
begin
if CompareText(Node1.Text, Node2.Text) < 0 then
Compare := -1
else if CompareText(Node1.Text, Node2.Text) > 0 then
Compare := 1;
end;
// Kriterium drei, wenn Compare noch 0
if Compare = 0 then
begin
//usw...
end;
end;