TLvlGraphControl: Nodes manuell positionieren

Rund um die LCL und andere Komponenten
Antworten
Ich934
Lazarusforum e. V.
Beiträge: 197
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

TLvlGraphControl: Nodes manuell positionieren

Beitrag von Ich934 »

Hallo,

ich habe hier ein LevelGraphControl mit diversen Nodes. Das funktioniert an sich ganz gut, nur bin ich mit der Ausgabe mit "lgoAutoLayout" nicht zufrieden. Ich kann diese Option deaktivieren, dann werden die Nodes aber alles übereinander gelegt.

Eine Eigenschaft Left, Top, ... bei Graph.GetNode habe ich nicht gefunden. Muss man das anders machen oder geht das gar nicht?

Vielen Dank.
Tipp für PostgreSQL: www.pg-forum.de

wp_xyz
Beiträge: 3635
Registriert: Fr 8. Apr 2011, 09:01

Re: TLvlGraphControl: Nodes manuell positionieren

Beitrag von wp_xyz »

Ich hab's selbst noch nicht so gemacht, aber möglicherweise kommst du mit diesen Properties weiter:
  • TLvlGraphLevel.DrawPosition, wobei TLvlGraphLevel über Graph.Levels[index] zugänglich ist und Graph eine public-Eigenschaft des TLvlGraphControl ist; die Levels entsprechen der horizontalen Position der Nodes.
  • TLvlGraphNode.DrawPosition, wobei TLvlGraphNode über Graph.Nodes[index] zugänglich ist. Das wäre die vertikale Position eines Nodes. Es gibt auch eine schreibbare Property TLvlGraphNode.Level, so dass man damit einen Node auch in ein anderes Level verschieben könnte.
Das ganze ist ziemlich störrisch und stürzt leicht ab. Ich bin für meine bisherige Anwendung (Klassendiagramme für die TAChart-Dokumentation, https://wiki.lazarus.freepascal.org/TAC ... ion#Series) mit dem automatischen Layout ausgekommen. Da ist es sinnvoll mit den Options des LvlGraphControl zu spielen. Vor allem lgoStraightenGraph, das den Graph symmetrisch anordnet, und lgoHighLevel, das die End-Nodes jedes Zweiges ins höchste Level verschiebt. Schau dir mal das Programm an, mit dem ich die Diagramme für die TAChart Documentation gemacht habe: https://github.com/wp-xyz/LazSamples/tr ... sHierarchy

Antworten