F: Es scheint, dass das Link Auto-Routing nicht funktioniert, wenn es ein großes Hintergrund-Shape in dem Diagramm gibt. Wie kann ich dies vermeiden?
A: Setzen Sie die Obstacle-Eigenschaft auf false:
backgroundShape.Obstacle = false
Zurück zum Anfang
F: Ist es möglich, bei dem Auto-Routing das Verschieben des Ursprungs- oder Ziel-Ankers der Verlinkung zu unterbinden? Es ist wesentlich, dass die Verlinkungen an den Ankerpunkten stehen bleiben, die der Nutzer festgesetzt hat.
A: Die Einstellung von Anchoring auf Keep:
Diagram.RoutingOptions.Anchoring = Keep
sollte das erledigen.
Zurück zum Anfang
F: Ist es möglich, eine Änderungshistorie einer Workflow zu führen und zwei Versionen zu vergleichen?
A: Wenn Sie die Unterschiede zwischen zwei Überarbeitungen desselben Dokuments zeigen wollen, können Sie einen Änderungslog implementieren und die Unterschiede in einer Liste der Log-Einträge anzeigen.
Aktivieren Sie die Eigenschaften Diagram.UndoManager und UndoManager.UndoEnabled und behandeln Sie das Ereignis Diagram.ActionRecorded. In dem Event-Handler erstellen Sie einen Logeintrag in Abhängigkeit von der gespeicherten Anweisung. Fügen Sie einen Zeitstempel jedem Satz zu, so dass Sie das Datum der Dokumentänderung mit der Zeit der Logsätze vergleichen können.
Sie können die Sammlung der Log-Einträge serialisierbar machen und sie in dem Diagram.Tag speichern.
Eine andere Möglichkeit ist das Zuordnen von eindeutigen IDs jedem DiagramItem.Tag. Dann können Sie die Dokumentänderungen überprüfen, ob Items mit bestimmten IDs in beiden Versionen existieren. Auf diese Weise erkennen Sie, wenn ein DiagramItem zugefügt oder entfernt wurde. Wenn Elemente mit einer bestimmten ID in beiden Dokumenten existieren, können Sie weiter deren Eigenschaftenwerte vergleichen, zum Beispiel, Text, Bounds, usw..
Zurück zum Anfang
F: Wie kann man Kundendaten den Items in dem Diagramm (Knoten und Links) zuordnen?
A: Sie können Ihre eigene Klasse erstellen, die von ShapeNode abgeleitet wird, und eine ID Eigenschaft zufügen. Sie können es den Anwendern erlauben, Items von Ihrem Typ zu erstellen, indem Sie das view.Behavior auf Custom und view.CustomNodeType auf typeof(Ihre_Knoten_Klasse) einstellen. In dem Beispielprojekt "Icon Nodes" wird gezeigt, wie Custom-Typen mit FlowChart.NET angewendet werden.
Eine einfachere Lösung können Sie realisieren, indem die ID der Tag-Eigenschaft des Items zugeordnet wird. Ein zusätzlicher "Bonus" besteht darin, dass Sie die Methode FindNode des Diagramms zum Suchen von Knoten nach deren Tag/ID anwenden können.
Zurück zum Anfang
F: Wo kann ich eine Bibliothek von Hydraulik-, Pneumatik- und Elektriksymbole für FlowChart.NET finden?
A: Derzeitig bieten wir solche Symbole nicht an. Stattdessen können Sie Ihre eigenen Shape-Definitionen erstellen, deren Image-Eigenschaft auf Bitmap oder Metadatei mit dem entsprechenden Symbol eingestellt wird. Sehen Sie sich das Beispiel über Symbolbibliothek "LogicGates" an, das in dem Flowchart.NET Samples-Verzeichnis installiert wird.
Zurück zum Anfang
F: Ist es möglich, mehr als ein Control innerhalb eines Knotens zu hosten?
A: Sie können eine Gruppe von einer ShapeNode und einigen ControlNodes erstellen, zum Beispiel:
ShapeNode container =
diagram.Factory.CreateShapeNode(20, 20, 50, 55,
Shapes.Rectangle);
container.HandlesStyle = HandlesStyle.MoveOnly;
ControlNode control1 =
new ControlNode(diagramView, new Button());
control1.Bounds =
new RectangleF(25, 25, 40, 10);
diagram.Nodes.Add(control1);ControlNode control2 =
new ControlNode(diagramView, new RichTextBox());
control2.Bounds =
new RectangleF(25, 40, 40, 30);
diagram.Nodes.Add(control2);
control1.AttachTo(container,
AttachToNode.TopLeft);
control2.AttachTo(container,
AttachToNode.TopLeft);
Zurück zum Anfang
F: Wie kann man die vordefinierten Shape-Vorlagen anwenden?
A: Nutzen Sie die FromId-Methode der Shape-Klasse oder die Elemente der Shapes-Klasse. Rufen Sie die Methode CreateShapeNode über die Factory-Eigenschaft der Diagram-Klasse auf. Setzen Sie die Shape-Eigenschaft des neuen ShapeNode-Objekts auf einen der vordefinierten Shapes:
ShapeNode b1 =
diagram1.Factory.CreateShapeNode(5, 52, 20, 30);
b1.Shape = Shape.FromId("Decision");
Zurück zum Anfang
F: Warum werden verschiedenartige Verbindungen zwischen den Knoten gezeichnet? Ich füge alle meinen Knoten auf einmal (von einer Datenbanktabelle) zu. Dann verbinde ich sie durch das Hinzufügen der Links (von einer anderen Datenbanktabelle) mit den entsprechend Eltern- und Kindknoten. Die Verbindungen werden nicht alle zwischen den Kanten der Knoten, und einige der Verbindungen mit dem Zentrum der Knoten angeschlossen.
A: Wenn zwei Knoten sich überkreuzen, und eine Verbindung zwischen ihnen gezeichnet wird, wird die Verbindung zuerst deren Zentren anschließen. Entweder erstellen Sie die Knoten weiter voneinander entfernt vor deren Verlinkung, oder erzeugen Sie die Verbindung als Dynamic, um ihre Endpunkte während der Bewegung der Knoten ringsherum neu zu berechnen. Sie können auch ausdrücklich Endpunktpositionen über die Nutzung der Sammlung DiagramLink.ControlPoints zuordnen.
Zurück zum Anfang
F: Wie kann man Ankerpunkte für eine Tabellenzelle einstellen?
A: Reihen können Ankerpunkte haben. Außerdem haben die AnchorPoint-Objekte eine Spalte. Diese Eigenschaft übt einen Einfluss aus, wenn ein AnchorPattern einer Tabellenreihe zugewiesen wird. Dies erlaubt es Ihnen, die Ankerpunktpositionen entsprechend den Tabellenzellen zu definieren.
Zurück zum Anfang
|