Danke,
ich hatte zwischendurch eine andere Lösung gefunden:
Delphi-Quellcode:
procedure TForm1.vstTermineNodeClick(Sender: TBaseVirtualTree;
const HitInfo: THitInfo);
var
A: TAuftrag;
T: TTeamWeekView;
R: TRect;
begin
case rgAnsicht.ItemIndex of
0: ;
1: begin
TeamWeekViewList.UnSelectAll;
T:=TTeamWeekView(vstTermine.GetNodeData(HitInfo.HitNode)^);
R:=vstTermine.GetDisplayRect(HitInfo.HitNode, HitInfo.HitColumn, False);
a:=nil;
case HitInfo.HitColumn of
1: A:=T.Montag.FindAuftragAt(Point(HitInfo.HitPoint.X, HitInfo.HitPoint.Y-R.Top), nil);
2: A:=T.Dienstag.FindAuftragAt(Point(HitInfo.HitPoint.X, HitInfo.HitPoint.Y-R.Top), nil);
3: A:=T.Mittwoch.FindAuftragAt(Point(HitInfo.HitPoint.X, HitInfo.HitPoint.Y-R.Top), nil);
4: A:=T.Donnerstag.FindAuftragAt(Point(HitInfo.HitPoint.X, HitInfo.HitPoint.Y-R.Top), nil);
5: A:=T.Freitag.FindAuftragAt(Point(HitInfo.HitPoint.X, HitInfo.HitPoint.Y-R.Top), nil);
6: A:=T.Samstag.FindAuftragAt(Point(HitInfo.HitPoint.X, HitInfo.HitPoint.Y-R.Top), nil);
end;
if A<>nil then
begin
A.Selected:=True;
vstTermine.Invalidate;
end;
end;
2: ;
end;
end;
Scheint auch soweit zu funktionieren.
Ich habe noch nicht getestet, was passiert, wenn ich gescrollt habe, weil in der Anwendung alle Nodes immer im Sichtbaren bereich liegen.
Möglichweise ist da deine Lösung besser. Mal ausprobieren...