Menü- und Dialogsprache |
Top Previous Next |
Die Menü- und Dialogsprache dient dem Zweck, Prozeduren zu erstellen, die Benutzereingaben aus Dialogen, Popup- oder Pulldown-Menüs oder bei Mausklick auswerten und weiterverarbeiten.
Zentrale Bedeutung kommt hier dem Zugriff auf die Dialogelemente wie Eingabefelder, Listboxen, etc., sowie der Übergabe von Koordinaten (z.B. Position des Mauszeigers beim Klicken) zu.
Dialogfeldtypen Der Inhalt eines Feldes hängt vom Typ des Feldes ab. Ein Button hat eine andere Interpretation als eine Eingabezeile. In Moskito werden die folgenden Interpretationen verwendet:
Button Wenn der Button gedrückt ist liefert der Eintrag den Text 1, sonst den Text 0
Eingabezeile (Textfeld) Als Text wird der Inhalt des Feldes übergeben.
Festtext Geliefert wird der Name oder Titel des Textes.
Listbox Es wird die selektierte Zeile der Box übergeben; bei Listboxen, die mehrere Zeilen selektieren können, wird eine kommaseparierte Liste geliefert.
Combobox Es wird die selektierte Zeile der Box eingetragen, bei Listboxen, die mehrere Zeilen selektieren können wird eine kommaseparierte Liste eingetragen. Wenn ein von den Einträgen abweichender Text in die Eingabezeile der Box eingetragen ist, dann wird dieser Text geliefert.
TreeView Geliefert wird der Name des Eintrags im Baum, der angeklickt ist. Es wird nur der eigentliche Name übergeben, nicht die Hierarchie.
Zugriff auf Dialogfelder Die Zugriffsfunktionen auf Dialogfelder sind die Funktionen in der Funktionsreferenz, die mit io_ beginnen. Als Parameter erwarten sie die Nummer des Dialogs, die Nummer des Dialogfeldes und ggf. Angaben darüber, was in die Felder eingetragen werden soll.
Inhalt von Dialogfeldern an Moskito übergeben Der Inhalt eines Dialogfeldes wird an einen Moskitobefehl übergeben, indem ein mit einem %-Zeichen eingeleiteter und abgeschlossener Platzhalter laut der untenstehenden Liste eingesetzt wird:
Bedingungen Der Vorteil der Bedingungen ist, daß die Werte überprüft werden können, noch bevor sie weiterverarbeitet werden. Ist die Bedingung erfüllt, wird die Anweisung aaa ausgeführt, ist die Bedingung nicht erfüllt, wird die Anweisung bbb ausgeführt: %?(Bedingung)?(aaa):(bbb)% Mögliche Bedingungen sind:
Beispiele: Dialogfelder Auswerten und Füllen Ein Benutzer soll in das Textfeld mit der Nummer 102 den Namen eines Plans und in das Feld 103 den Layer eintragen. Wenn er anschließend den OK-Button drückt, wird die Moskitofunktion DeletePlan mit diesen Parametern aufgerufen:
” DeletePlan "NAM/%102c%" TYP/%103c% ”
Um eine Listbox mit mehreren Spalten zu füllen, müssen zuerst die Spalten vorgegeben werden. Die verschiedenen Einträge einer Spalte werden mit einem | voneinander getrennt.:
MakeDialogbox 165 io_setDialogField 165 108 "Rechts|Hoch" anschließend kann die Liste z.B. mit einem DBquery gefüllt werden.
io_fillListbox 165 108 "123|456" io_fillListbox 165 108 "2596258.74|5716022.20" io_fillListBox 165 108 DBquery($x,$y from Object /noq)
Beim Klick mit der linken Maustaste sollen die Koordinaten des Punktes, an dem der Mauszeiger sich befindet übergeben werden: ”#P %x% %y%\n” Wird nun die linke Maustaste betätigt, so wird dieser Text ermittelt und die in % eingeschlossenen Sequenzen werden ersetzt. %x% bedeutet die X-Koordinate der Stelle, an der die Taste gedrückt wurde. Wobei die Echtkoordinaten an der Mausposition verwendet werden und nicht die Pixelkoordinaten. %y% liefert entsprechend die Y-Koordinate. \n wird schon beim Einlesen der Kommandos durch einen Zeilenvorschub ersetzt. Sonst sind Zeilenvorschübe einfach durch getrennte Zeilen zu realisieren. Wird nun die linke Maustaste gedrückt, so erscheint als Kommando
#P 345 678
Der Dialog soll eine Eingabe im Kommandofenster erzeugen:
%%%%input %102c%
Beispiele für eingefügte Moskito-Befehle WindowWinHelp ..\\help\\%X(AnyGetinfo global flag T24)%\\tabref.hlp HELP_FINDER 0 „AnyGetinfo lobal flag T24“ liefert die aktuelle Sprache („DE“). Entsprechend wird die Hilfe aus dem Verzeichnis ..\help\DE\ ausgeführt.
Beispiel zur Handhabung von Listviews Der Listview hat die Dialogfeldnummer 100. Die dritte Zeile ist selektiert.
Zugriff auf einzelne Felder der markierten Zeile:
Echo c0: %100c0% c1: %100c1% c2: %100c2% c0: 3 c1: 21 c2: 22 Zugriff auf die erste Spalte: Echo C0: %100C0% C0: 1,2,3,4 Zugriff auf die zweite Spalte: Echo C1: %100C1% C1: 01,11,21,31 Zugriff auf die selektierte Zeile: Echo c-1: %100c-1% c-1: 3|21|22|23|24 Zugriff auf den gesamten Inhalt des Listview: Echo C-1: %100C-1% C-1: 1|01|02|03|04,2|11|12|13|14,3|21|22|23|24,4|31|32|33|34
Beispiel zur Handhabung von Listboxen Die Listbox hat die Dialogfeldnummer 100. Die dritte Zeile ist selektiert. Gefüllt wurde sie mit io_fillListbox 502 100 01 11 21 31
Zugriff auf den Inhalt: %100C-1% liefert eine Kommaliste, Fall %100C-2% mehrere Zeilen. Echo C-1: %100C-1% C-1: 01,11,21,31
Echo C-2: %100C-2% C-1: 01 11 21 31
Zugriff auf die selektierte Zeile: Echo c: %100c% c-1: 21
Beispiel zur Handhabung von Listboxen die mit /ITEMDATA gefüllt wurden Die Listbox hat die Dialogfeldnummer 100. Die dritte Zeile ist selektiert. Gefüllt wurde sie mit
io_fillListbox 502 100 /ITEMDATA 3:01 4:11 5:21 6:31 Zugriff über Itemdata: Echo C: %100C% C: 5 Der Restliche Teil ist identisch.
Beispiel zur Verwendung von Messagecodes in Listviews --- DialogDefine 1600 DIALOG_1 DIALOG DISCARDABLE 20, 40 , 275, 190 STYLE DS_MODALFRAME | WS_OVERLAPPED | WS_CAPTION | WS_VISIBLE | WS_SYSMENU CAPTION "Dialog" Font 8, "Helv" BEGINN CONTROL ""; 100, "SysListView32", LVS_Report | _LV_FULLROWSELECT | LVS_EDITLABELS | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 16, 18, 240, 150 END
---DialogExec_1600 0 io_setDialogField 1600 100 1|2|3 io_fillListbox 1600 100 a|b|c|d|e|f g|h|i
---DialogExec_1600 100 Echo /NOW "MessageCode <%m%>" %?(message(0))?(Echo /NOW MessageCode 0):()% %?(message(1))?(Echo /NOW MessageCode 1):()% %?(message(2))?(Echo /NOW MessageCode 2):()% %?(message(3))?(Echo /NOW MessageCode 3 Klick):()% %?(message(4))?(Echo /NOW MessageCode 4 Doppelclick):()% %?(message(5))?(Echo /NOW MessageCode 5 Klick rechts):()% %?(message(6))?(Echo /NOW MessageCode 6 Doppelclick rechts):()% %?(message(7))?(Echo /NOW MessageCode 7):()% %?(message(8))?(Echo /NOW MessageCode 8):()% %?(message(9))?(Echo /NOW MessageCode 9):()%
Siehe auch |