![]() |
||
![]() |
So verwenden Sie benutzerdefinierte DatenfelderMit iGrafx Professional haben Sie die M÷glichkeit, Objekte mit Daten zu hinterlegen - der Proze▀modus erlaubt alle Angaben bezⁿglich der Dauer, der Art und der jeweiligen Ressourcen einer AktivitΣt. Durch einen Doppelklick auf ein Symbol blenden Sie das ╗Eigenschaften½-Fenster ein. Der Befehl ╗Verknⁿpfungen½ befindet sich im Menⁿ ╗Einfⁿgen | Verknⁿpfungen½. Hier bestimmen Sie die Art der Verknⁿpfung und legen im Register ╗Benutzerdefinierte Daten½ ⁿber ╗Einrichten½ neue benutzerdefinierte Felder an. Diese Felder k÷nnen allerdings nur per VBA ausgelesen werden. Zudem k÷nnen Sie mit einigen Kommandos die Feldinhalte in einer Textdatei speichern und diese Datei etwa in eine Datenbank importieren. Starten Sie iGrafx und wΣhlen Sie ein neues ╗Basic Diagram½. ╓ffnen Sie das ╗Tools½-Menⁿ und wΣhlen darin ╗Visual Basic | Visual Basic Editor½. Das Aussehen des VBA-Editors entspricht dem in Word oder Excel. In der linken oberen Ecke befindet sich ein Bereich, in dem die einzelnen Projekte aufgelistet sind. Mit einem Doppelklick auf ╗Diagram1½ ÷ffnen Sie die ArbeitsflΣche. Hier k÷nnen Sie nun fⁿr das ge÷ffnete Dokument Formulare und VBA-Code erzeugen. Im linken unteren Bereich des VBA-Fensters sehen Sie die Eigenschaften der ge- rade bearbeiteten Ebene. Zuerst definieren Sie die einzelnen Variablen. Dies erledigen die ╗DIM½-Befehle im ersten Block des Listings im Kasten. Die folgenden ╗Set½-Befehle aktivieren das benutzte Diagramm und rufen die ╗CustomDataDefinitions½ auf, was eine Liste mit den Werten der benutzerdefinierten Daten ist. Die nΣchsten Methoden, ╗CreateObject½ und ╗CreateTextFile½, legen den Text an. Wenn Sie die Textdatei nicht in ╗C:\Temp½ anlegen wollen, Σndern Sie den Pfad. Mit der letzten Set-Anweisung wird festgelegt, da▀ Daten in die Textdatei geschrieben werden k÷nnen. Diese Daten mⁿssen aus den benutzerdefinierten Daten ausgelesen werden. Der ╗Write½-Befehl im nΣchsten Befehlsblock legt Spaltenⁿberschriften an und bereitet den Text zum Import in die Datenbank vor. Die erste Spalte bekommt den Titel ╗Name½. Dieses Feld enthΣlt den Text des Objekts. Die Namen der benutzerdefinierten Felder werden global innerhalb eines Dokuments verwaltet, jedes Objekt erhΣlt die gleichen Felder, kann aber mit unterschiedlichen Werten belegt werden. Daher ist eine genaue Identifikation notwendig. Die Bezeichnungen der benutzerdefinierten Felder werden ⁿber das Objekt ╗AnObject.Name½ ausgelesen. Abschlie▀end liest das Makro die Objektinformation aus und schreibt sie in die Textdatei. Dafⁿr werden per Schleife so lange die Inhalte der Felder abgefragt, bis alle Felder ausgelesen sind. Dies geschieht mit der ╗Count½-Methode des ╗CustomDataDefinitions½-Objekts. Au▀erdem sollen nur Shapes ausgelesen werden, nicht Linien oder andere Objekte. Dies wird durch eine If-Then-Abfrage gewΣhrleistet. Die einzelnen Werte sind auch hier mittels Komma getrennt in die Textdatei geschrieben. Am Ende jeder Zeile wird dann noch ein Zeilenumbruch eingefⁿgt. Tragen Sie nun Werte in die benutzerdefinierten Felder ein. Listing ╗igrafx½ Dim igxDocumentAs igrafx3.Document Dim igxDiagram As Diagram Dim igxShape As Shape Dim igxCustomDataDef As CustomDataDefinitions Dim line As Recordset Dim AnObject As Object Dim i As Integer ' Const ForReading = 1, ForWriting = 2, ForAppending = 3 Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0 Dim fs, f, ts, s Dim defvol As CustomDataValue Set igxDocument = Application.ActiveDocument Set igxDiagram = Application ActiveDocument.ActiveDiagram Set igxCustomDataDef = igxDocument.CustomDataDefinitions Set fs = CreateObject ("Scripting.FileSystemObject") fs.CreateTextFile "C:\temp\test1.txt" Set f = fs.GetFile ("C:\temp\test1.txt") Set ts = f.OpenAsTextStream (ForWriting, TristateUseDefault) ts.write "Name" For Each AnObject In igxDocument.CustomDataDefinitions ts.write ", " & AnObject.Name Next ts.write vbCrLf Leerzeile nach Spaltenkopf ts.write vbCrLf For Each AnObject In igxDiagram.DiagramObjects If AnObject.Type = ixObjectShape Then ts.write AnObject.Shape.Text For i = 1 To igxDocument.CustomDataDefinitions.Count ts.write ", " & AnObject.CustomDataValues.Item (CInt (i)).Value Next End If ts.write vbCrLf Zeilenumbruch Next |
![]() |