Einzelnen Beitrag anzeigen

Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#3

AW: VirtualStringTree Relativer HitPoint

  Alt 8. Jun 2022, 11:58
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...
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat