Moskito als Server |
Top Previous Next |
DDEExecute Zur Veranschaulichung dient hier MS Access als Client. Ausgangssituation sei das folgende Formular, das einer Suche in der Moskito-Auskunft über die Flurstücksnummer entspricht. Im Formular sind die Felder Flurstück, Maßstab, X-und Y-Koordinate und Gemeinde angelegt. Über die Drop-Down Liste Flurstück kann ein beliebiger Datensatz ausgewählt werden. Die Schaltfläche Moskitoansicht enthält die DDE-Anbindung. Durch Anklicken wird Moskito (falls nötig) gestartet, und die Pläne zum ausgewählten Flurstück werden im angegebenen Maßstab im Planfenster dargestellt. Um dies zu erreichen, ist der Schaltfläche die folgende Ereignisprozedur zugeordnet.
Private Sub PlanAnzeigen_Click()
On Error Resume Next
Dim Kanal, Tabellenname, I, TopicList
Kanal = DDEInitiate("Moskito", "System")
If Err Then Err = 0 I = Shell("C:\Moskito\M4.cmd",1) If Err Then Exit Sub Kanal = DDEInitiate("Moskito", "System") End If
DDEExecute Kanal, "wsc\n" & Maßstab & "\n#P " & X & " " & Y & "\n AuskunftWorkproc RELOAD\n"
DDETerminateAll
End Sub
Die erste Zeile des Programms legt fest, daß die Prozedur PlanAnzeigen beim Anklicken der Schaltfläche gestartet wird: Private Sub PlanAnzeigen_Click() Eine Fehlerbehandlungsroutine wird eingerichtet: On Error Resume Next Die benötigten Variablen werden deklariert: Dim Kanal, I Durch DDEInitiate wird ein Kanal geöffnet und eine Verknüpfung zu Moskito als Server hergestellt. Die Syntax der Funktion lautet DDEInitiate(“Serverapplikation”, “Thema”). Das Thema legt fest, auf welche Programmdatei zugegriffen werden soll. Moskito unterstützt das Standardthema “System”. Kanal = DDEInitiate("Moskito", "System") (Bei MSWord beispielsweise kann das Thema auch ein geöffnetes Dokument sein oder in Access der Name einer Datenbank.) Ist Moskito nicht aktiv, wird dies als Fehler registriert (Zeile 5), der Fehlercode wird zurückgesetzt (Zeile 6) und Moskito gestartet (Zeile 7). Bei einem weiterem Fehler wird die Prozedur beendet (Zeile 8). Ansonsten ist Moskito jetzt aktiv und die Verknüpfung wird hergestellt (Zeile 9). If Err Then Err = 0 I = Shell("C:\Moskito\M4.cmd",1) If Err Then Exit Sub Kanal = DDEInitiate("Moskito", "System") End If Mit der Anweisung DDEExecute werden die Moskitofunktionen “Zoom absolut”- wsc - und “Eingeschaltete Layer nachladen ” - AuskunftWorkprocRELOAD - ausgeführt. Innerhalb der Anführungszeichen kann jede beliebige Moskitofunktion ausgeführt werden. Dabei muß die Syntax der Moskitofunktion exakt nachvollzogen werden, insbesondere müssen Leerzeichen (└┘) an den richtigen Stellen eingefügt werden wie hier im Funktionsdialog “#P└┘x-Koordinate└┘y-Koordinate”. Umgekehrt dürfen auch nicht zu viele Leerzeichen eingefügt werden wie beispielsweise nach den öffnenden Anführungszeichen. DDEExecute Kanal, "wsc\n" & Maßstab & "\n#P " & X & " " & Y & "\n AuskunftWorkproc RELOAD\n" Die Übermittlung einer Befehlszeile in Moskito (Return) wird mit “\n” nachgebildet. Um innerhalb des Moskito-Funktionsdialoges auf die aktuellen Inhalte der Access-Formularfelder Maßstab, X und Y zurückgreifen zu können, werden sie in &-Zeichen eingeschlossen. Dies geschieht außerhalb der Anführungszeichen, so dass hier zusätzliche Leerzeichen ignoriert werden. Nach der Ausführung der Moskitobefehle werden in Zeile 12 alle Verknüpfungen geschlossen, DDETerminateAll und das Programm beendet. End Sub
|