FlowChartX - FAQ
Übersicht   Funktionen   Online Demo   Download   Galerie   FAQ   Forum   Online Help   Kaufen  

Implementierung von OLE Drag & Drop-Funktionen in Visual Basic

Anwendungsfehler in der Arrow.DestinationBox-Eigenschaft

Probleme beim Zugriff auf die Box.Font-Eigenschaften

Löschen einer Tabelle mit allen ihren Kindern

Auf Schleifen prüfen, bevor ein neuer Pfeil erzeugt wird

Bewegen eines Objekts mit Visual Basic 6

Gebrauch der "Manipulation Handle"-Maske.

Einstellen des Maus-Cursors

Bilder laden in Visual Basic

Technischer Support und Upgrades

Einschränkungen der Demo-Version

Lizenz-Beschränkungen

 

 

F:   Welche Drag & Drop-Methode kann man anwenden?

Die FlowChartX Drag & Drop-Methode übergibt ein Argument vom Typ FLOWCHARTLibCtl.IdataObject, von dem ich annehme, dass es ein Typelib für das Standart COM IDataObject ist. Mein Problem besteht darin, dass ich versuche auf die Daten im dataObj zuzugreifen, daraufhin aber den Laufzeitfehler "Automation type not supported in Visual Basic" erhalte. Haben Sie eine Lösung hierfür? Gibt es bessere Möglichkeit OLE Drag & Drop mit Ihrem Control in VB zu implementieren?

A:     Es gibt eine neue Drag & Drop-Methode namens drProgrControlVB, die dieselben Funktionen wie drProgrControl bietet. Der Unterschied besteht darin, dass die Events, die ausgelöst werden, wenn die Eigenschaft auf VB-Modus gesetzt wird, ihre Parameter vom IVBDataObject-Interface erhalten, welches mit der Automation kompatibel ist. Die FlowChartX VB-Events haben die gleichen Namen wie diejenigen, welche durch das drProgrControl ausgelöst werden. Es muß nur das Suffix 'VB' angehängt werden.

zurück zum Anfang

 

F:     Ich erhalte eine Anwendungsfehler-Meldung, wenn ich auf die Eigenschaften der DestinationBox des Pfeils zugreife, der als Argument im RequestCreateArrow-Event zugewiesen ist.

A:     Wenn RequestCreateArrow ausgelöst wird, ist das DestinationBox-Objekt des Pfeils noch nicht eingestellt. Wir haben eine neue Pfeil-Eigenschaft namens "ExpectedDestination" hinzugefügt, die nur im RequestCreateArrow Event-Handler gültig ist. Sie verweist auf das entsprechende Kästchen oder die Tabelle, die das Zielobjekt des Pfeils sein wird, wenn dieser erzeugt wird.

zurück zum Anfang

 

F:     Ich habe keinen Zugriff auf die Font-Eigenschaften des Kästchen-Objekts, jeder Versuch erzeugt einen Fehler.

A:    Standardmäßig sind die Font-Eigenschaften für alle Objekte (Tabellen, Kästchen, Pfeile) auf Null/Nichts gestellt. Wenn die Font-Eigenschaft eines FlowChartX-Objekts Null ist, wird die Font-Eigenschaft des Flowchart-Objekts benutzt, um den Text des Objekts wiederzugeben. Man kann die Speichernutzung gering halten, indem nicht jedem Diagrammelement Fonts zugewiesen werden. Wenn der Font eines Objekts Null ist, benutzt es den Flowchart-Font, um seinen Text wiederzugeben. Wenn Sie unterschiedliche Fonts für unterschiedliche Objekte benötigen, sollten Sie diese erst auf irgendeinen Wert setzen, indem Sie das VB SET-Statement benutzen und danach sind Sie in der Lage auf die Font-Eigenschaften ohne Fehler zuzugreifen.

zurück zum Anfang

 

F:    Ich möchte eine Tabelle mit all Ihren Kindern löschen. Welche Methode soll ich dafür anwenden? Ist es sinnvoll, eine Gruppe zu erstellen und die DestroyGroup-Methode zu verwenden?

A:    Sie können einen rekursiven Algorithmus verwenden, um die Tabelle gestuft zu löschen - etwa auf die folgende Art und Weise


`*************************

sub CascadingDelete(tbl as Table)
  dim i as integer

  `hier werden alle Tabellen - Kinder gelöscht
  For i = 1 To tbl.GetRelatedTables(1,rlManyToOne).Count
     CascadingDelete tbl.GetRelatedTables(1,rlManyToOne).Item(0)
  Next i

  `die Tabelle hat keine Kinder mehr, daher
  `können wir diese jetzt löschen
  fc.DeleteItem tbl
end sub

sub someSub
  if fc.ActiveItem = itTable then
    CascadingDelete ActiveTable
  end if
end sub

`***************************

zurück zum Anfang

 

F:    Wie kann ich auf Schleifen prüfen, bevor ein Pfeil platziert wird?

Ich habe bisher den RequestCreateArrow verwendet, um den Pfeil abhängig vom vorhergehenden und vom nachfolgenden Objekt zu bestätigen, aber ich kann die FindCycle-Funktion nicht benutzen, so lange der Pfeil nicht endgültig platziert wurde. Wissen Sie, wie ich dieses Problem umgehen kann?

A:     Sie können die FindShortestPath-Methode nutzen, um zu überprüfen, ob mit dem Pfeil eine Schleife entsteht. Wenn beispielsweise der Pfeil zwischen den Kästchen b1-> b2 erzeugt wird, dann wird für den Fall, dass FindShortestPath(b2, b1) einen Pfad findet, eine Schleife entstehen (der Pfeil verbindet die beiden Enden des gefunden Pfads).

Eine andere Lösung: Wenn der Pfeil von b2 nach b1 erzeugt wird, dann wird das Hinzufügen des Pfeils wieder eine Schleife erzeugen, falls FindShortestPath(b1, b2) eine Pfad zurückgibt.

In Ihrem RequestCreateArrow Event-Handler könnten Sie also folgenden Code verwenden:

if FindShortestPath(arrow.SourceBox,ExpectedDestination) = Nothing then
      create = true
else
      create = false
end if
                         

zurück zum Anfang

 

F:     Wie kann ich die Position eines Objektes (z.B. eines Kästchens) in VB6 verändern?

A:     Die Position von Kästchen und Tabellen können Sie mit der SetRect-Methode verändern.

zurück zum Anfang

 

F:     Wie ist MnpHandlesMask zu nutzen?

IBoxItem* pBox =
      m_pFCXWidget->createBox( QRect( 250,  250, 140, 40 ),
      "Hallo!", "Tool Tip" );
Wenn die Maske der MnpHandles-Eigenschaft wie folgt gesetzt wird :
 pBox->put_MnpHandlesMask( 110100000 );
wird nur das Move-Handle und die Right-Edge-Handle angezeigt?

A:     Die Handles-Maske ist eine Bit-Maske. Demzufolge sollte 110100000 die binäre Representation der Maske sein. Rufen Sie die Funktion mit der dezimalen Repräsentation dieser Zahl auf:

bin 110100000 = dec 416 
pBox->put_MnpHandlesMask( 416 );

zurück zum Anfang

 

F:     Wie kann ich den Maus-Cursor mit FlowChartX einstellen?

A:     Der Maus-Cursor kann mit der SetMouseCursor-Methode des FlowChart-Objekts verändert werden. Der Methoden-Prototyp lautet wie folgt:

SetMouseCursor(type, handle, destroyOld)

wobei::
'type' der Cursor-Typ ist, den Sie ersetzen wollen (z. B. zeigt mcArrowStart constant (= 3) den Mouse-Cursor als Pfeil an);
'handle' der Cursor Resource Handle ist, welcher von ::LoadCursor Window's API zurückgegeben wird;

'destroyOld' der boole'sche Wert ist, der angibt, ob der vorherige Cursor gelöscht werden soll.

Zum Beispiel können Sie für ein FlowChartX-Objekt namens 'fc' folgenden Visual C++ Code nutzen, um den Maus-Cursor zu verändern:

fc.SetMouseCursor(mcArrowStart,(ULONG)::
   LoadCursor(NULL, IDC_ARROW), FALSE);

zurück zum Anfang

 

F:     Wie kann ich ein LoadPicFromRes in einem VB-Programm aufrufen?

A:     Sie sollten Ihre Bilddateien (.jpeg, .ico, .bmp, etc) als Custom Resource einfügen. Sie sollten ihnen Resource String Ids und keine Integer-Zahlen, wie sie von Resource Editoren normalerweise genutzt werden. Wenn die Bilder in Ihrer .exe Datei lokalisiert werden, können Sie 0 als Resource-Instanz-Handle angeben.

Beachten Sie bitte, dass, wenn das Projekt in VB interpretiertem Modus getestet wird, die Resourcen mit 0 nicht gefunden werden, weil das Projekt im Prozess von VB.EXE läuft. Wenn Sie Ihr Projekt als .EXE erzeugen und starten, dann läuft es einwandfrei.

Falls Sie Ihre Resourcen in einer getrennten DLL speichern, dann müssen Sie die GetModuleHandle API-Funktion aufrufen, um die Instanz-Handle für das DLL zu erhalten.

zurück zum Anfang

 

F:    Welcher technische Support wird mit dem Erwerb von FlowChartX zugesichert? Wieviel kosten Updates?

A:     Mit dem Erwerb der FlowChartX-Lizenz wird für die Dauer von 12 Monaten der Zugriff auf den technischen Support und kostenlose Upgrades zugesichert.

zurück zum Anfang

 

F:     Ich habe das FlowChartX Demoprogramm geladen.Welche Einschränkungen hat eigentlich die Demo-Version?

A:     Im Demoprogramm lassen sich maximal 32 Objekte erstellen. Die Demo-Version kann man zeitlich unbegrenzt anwenden.

zurück zum Anfang

 

F:     Ich möchte FlowChartX in einer Anwendung nutzen, die nur für eine kleine Gruppe von Benutzern entwickelt wurde. Kann ich das Control an jeden Benutzer weitergeben, falls ich die 'Standard Einzel-Entwickler'-Version kaufe oder benötige ich vielleicht die 'Site-Wide'- Lizenz dafür?

A:     FlowChartX Lizenzen beschränken nicht die Zahl der Benutzer ihrer fertigen Software, sondern die Zahl der Entwickler, welche die Komponente nutzen. Falls Sie freiberuflich als Entwickler arbeiten oder Sie der einzige Programmierer sind, der mit FlowChartX in Ihrem Betrieb arbeitet, dann genügt Sie die 'Einzel-Entwickler'-Lizenz. Danach können Sie Ihre fertige Anwendung an so viele Leute ausliefern, wie Sie wollen. Der Preis ist nur an der Zahl der Software Entwickler gebunden, die die Kontrolle nutzen werden ( unsere technischen Unterstützungskosten sind hiervon abhängig ).

zurück zum Anfang

 

   
 
   
Forums: FlowChart.NET, WpfDiagram, DiagramLite, JsDiagram, MasterChart, WebChart, Planner.NET, WpfPlanner, Reporting, ReportingLite
© MindFusion Ltd. 2012