Das Problem ist mehr oder wenig gelöst:
Ich habe für das Markieren der Einträge eine extra Procedure angelegt, welche nach dem erstellen des Trees und nach dem Expandieren der Knoten aufgerufen wird.
Wichtig ist dabei, das der Tree zuvor den Forcus erhält, da sonst der Fehler wieder erscheint. ERhält er den Focus, so markiert er selbstständig den ersten (0ten) node.
Um das zu umgehen habe ich den ersten zu markierten gesucht und eigenständig markiert, Alle weiteren werden mit subSelect markiert.
Hier meine Lösung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TMain.MarkierenImLeistungsbaumClick(Sender: TObject); var i,j:integer; begin
if Length(Selection)>0 then begin
j:=0;
for i:=0 to Length(Selection)-1 do if Selection[i]=TRUE then begin TreeView.Items[i].Selected:=TRUE; j:=i; break; end;
TreeView.SetFocus;
for i:=j to TreeView.Items.Count-1 do begin if Selection[i]=TRUE then TreeView.Subselect(TreeView.Items[i]); end; end;
end; |