Im Artikel „Erzeugnisstruktur visualisieren als Gozintograph“ habe ich mein Tool vorgestellt. Falls Sie nach anderen Lösungen suchen Erzeugnisstrukturen oder allgemein Baumstrukturen darzustellen, zeige ich Ihnen in diesem Artikel zwei alternative und einfachere Möglichkeiten.
Lazarus und TLvlGraphControl
Wenn Sie schon mit Lazarus gearbeitet haben, kennen Sie vermutlich auch die Komponente TLvlGraphControl. Lazarus stellt damit im Package-Graph die installierten Packages mit deren Verbindungen dar.
Die Baumstruktur des Gozintograph oder einer Produktstruktur wird immer über die Methode GetEdge erzeugt. Als Parameter erwartet die Methode eine Quell- und einen Zielknoten. Das TRUE am Ende sorgt dafür, dass noch nicht vorhandene Elemente angelegt werden. Das wars auch schon.
procedure TMainForm.FormCreate(Sender: TObject); var sl : TStringList; sr : TStringArray; i : integer; node : TLvlGraphNode; col : TColor; begin sl:=TStringList.Create; sl.LoadFromFile('demo.csv'); for i:=0 to sl.Count-1 do begin sr:=sl[i].Split(';'); edge:=LvlGraphControl1.Graph.GetEdge(sr[1],sr[0],true); end; sl.Free;
Mit den obigen Zeilen importiert Lazarus bereits die CSV-Datei. TLvlGraphControl stellt den Gozintograph auch schon dar.
Auch danach sind Änderungen an Struktur und Knoten möglich. Für die Struktur können beispielsweise die Farben angepasst werden. Dafür werden alle Nodes in einer Schleife durchlaufen. Mit den Funktionen InEdgeCount und OutEdgeCount lassen sich eingehende und ausgehende Verbindungen zählen. Dadurch ist leicht zu ermitteln, ob es sich um ein Einzelteil, eine Baugruppe oder ein Produkt handelt.
for i:=0 to LvlGraphControl1.Graph.NodeCount-1 do begin node:=LvlGraphControl1.Graph.Nodes[i]; if (node.InEdgeCount>0) and (node.OutEdgeCount>0) then col:=clBlue //Baugruppe else if (node.InEdgeCount>0) and (node.OutEdgeCount=0) then col:=clGreen //Produkt else col:=clYellow; //Einzelteil node.Color:= TColorToFPColor(col); end;
Mit nur ein paar Zeilen Code lässt sich das Ergebnis durchaus anschauen.
Etwas schade ist, dass keine Pfeile und keine Mengen angezeigt werden. Aber für eine schnelle Übersicht ist TLvlGraphControl eine gute Möglichkeit.
Microsoft Excel und GIGRAPH
Für das nächste Tool müssen Sie nicht einmal selber programmieren. Seit Excel die Möglichkeit bietet, den Funktionsumfang mit Addins zu erweitern, gibt es eine Fülle von zusätzlichen Tools. Eines meiner Lieblingstools ist GIGRAPH. Es stellt Netzwerkverbindungen da. Die Funktionsweise und Möglichkeiten habe ich schon im Artikel Materialflussanalysen mit GIGRAPH vorgestellt.
Was mit Materialflussanalysen funktioniert, passt auch für hierarchische Strukturen.
Das Tolle an GIGRAPH ist die interaktive, extrem schnelle Darstellung. Elemente lassen sich verschieben, zoomen ist möglich und dank Excel kann es direkt neben der Datentabelle platziert werden.
Leider hat das eigentlich geniale Tool, auch mehrere Nachteile. Einmal muss man auf die Darstellung als Baumstruktur verzichten. GIGRAPH stellt alles als Netzwerk in Sternform dar. Das ist zwar nicht immer passend, das könnte man aber meiner Meinung nach akzeptieren.
Es ist allerdings auch nicht möglich, eine angepasste Struktur zu speichern. Bei jedem Öffnen geht immer die aktuelle Ansicht verloren. Sie muss dann immer neu erstellt werden. GIGRAPH passt dabei jedes Mal auch die Elementpositionen an. So hat man leider keine Möglichkeit, eine sinnvolle Analyse durchzuführen.
Für einen ersten Überblick ist für mich GIGRAPH ein wertvolles Tool.
Download
TLvlGraphControl Beispiel mit Lazarus und GIGRAPH Beispiel mit Excel
Links
GIGRAPH – Network Visualization auf Microsoft Appsource (oder https://gigraph.io/)