DefineWindowMenu

Top  Previous  Next

Anlegen von Menüs, Toolbars, etc. für das Graphik- oder Inputfenster. Wenn keine Menüart angegeben wird, wird ein neuer Menüpunkt angelegt.

Mit DefineWindowMenu  angelegte Menüs, Toolbars, etc. sind gültig für die nachfolgenden Sitzungen und werden mit DisplayWindowMenu angezeigt.

Die Funktion läuft in einer Endlosschleife für beliebig viele Menüeinträge oder Buttons, die mit ENTER beendet werden kann. Innerhalb der Schleife läuft eine zweite Endlosschleife für die durch das Menü/den Button auszuführenden Befehle, die ebenfalls mit ENTER beendet wird.

Voraussetzung

Der Name des Menüs muß eindeutig sein, d.h. es können nicht zwei Menüs mit dem selben Namen existieren. Wenn bereits ein Menü mit dem angegebenen Namen existiert, wird nachgefragt, ob dieses gelöscht werden soll.

Parameter

NAME/<menüname>

Name des Menüs. Ist er nicht angegeben, wird danach gefragt.

STYLE/<buttonstyle>

Style-Information aus den Werten MIS_TEXT,  MIS_BITMAP,  MIS_SUBMENU, 0. Wenn nicht 0 angegeben wird, gilt der ausgewählte Stil für alle Buttons/Menüeinträge. Ist der Schalter nicht angegeben, wird für jeden Button/Menüeintrag danach gefragt.

ATTRIBUTE/<buttonattribute>

Attributinformation der Einträge, meist 0. Ist der Schalter nicht angegeben, wird für jeden Button/Menüeintrag nach den Attributen gefragt.

POSITION/<buttonpos>

Position des/der neuen Einträge im Menü. Es kann eine beliebige Nummer angegeben werden, die die Position bestimmt, oder MIT_END für das Ende des Menüs. Ist der Schalter nicht angegeben, wird für jeden Button/Menüeintrag nach den Attributen gefragt.

/SILENT

Es werden keine Ausgaben erzeugt (Sinnvoll, wenn der Befehl aus einer Batchdatei ohne Dialoge ausgerufen wird).

/MENUEBAR

Es wird ein Menü erstellt.

/SYSTEMMENUE

Es wird ein Systemmenü erstellt (erreichbar über linke obere Ecke des Graphikfensters).

/TOOLBAR

Es wird eine Toolbar (Buttonleiste) erstellt.

FORBIDDEN/<Ziel>

Definition der Fensterklassen, an die eine Toolbar nicht andocken darf.
<Ziel> ist eine komma-separierte Liste von Fensterklassen.
Gültige Fensterklassen sind: MAIN, COMMAND, DIALOG, DETAIL, DOCK

Beispiel:
FORBIDDEN/COMMAND,DIALOG,DETAIL,DOCK
die Toolbar darf nur im Hauptfenster angedockt werden.

Anmerkung: /TOOLBAR muss gesetzt sein.

/ACCEL

Es wird ein Tastenkürzel (Accelerator) erstellt.

/POPUP

Es wird ein Popup- Menü (KontextMenü , Rechte-Maustasten-Menü) erstellt.

/STATUSBAR

Es wird eine Statusbar erstellt.

/TEMP

/h        

Kurzhilfe anzeigen

 

Rückgabewert

Wert

Beschreibung

0

Darstellung erfolgreich abgeschlossen

1

Kurzhilfe wurde ausgegeben

4

Interner Fehler

Dialog

Befehl eingeben:DefineWindowMenu

Name des Menüs:

MeinMenü

Die Abfrage nach dem Namen des Menüs entfällt, wenn der Schalter NAME/<menüname> mitgegeben wird. Existiert bereits ein Menü mit diesem Namen, kommt die Abfrage:

Menü existiert schon. Soll es gelöscht werden? [Ja|Nein](N) n

Bei j wird das alte Menü gelöscht und ein neues angelegt. Bei n kommt die Abfrage:

Soll das Menü ergänzt werden? [Ja|Nein](N) j

Style des Menüitems eingeben:

(MIS_TEXT, MIS_BITMAP, MIS_SUBMENU)

MIS_TEXT

MIS_TEXT erstellt ausführbare Textmenüs, MIS_BITMAP erzeugt Buttons, MIS_SUBMENÜ erzeugt ein Untermenü (Drop-Down-Menü), in das danach Textmenüs oder Buttons eingefügt werden können. Die Abfrage entfällt, wenn der Schalter STYLE/<buttonstyle> mitgegeben wird.

Attribut des Menüitems eingeben:

0

0

Die Null ist bei diesem Befehl nur als Eingabevorschlag gedacht. Sie kann nicht durch einfaches Drücken von <Enter> bestätigt werden, sondern muß extra eingegeben werden. Die Abfrage entfällt, wenn der Schalter ATTRIBUT/<buttonattribut> mitgegeben wird.

Text des Menüitems eingeben:

Kontextmenü1

Position des Menüitems eingeben:

(MIT_END)

MIT_END

Neben der vorgeschlagenen Eingabe MIT_END, die dafür sorgt, daß das neue Menü an das bestehende hinten angehängt wird, kann an dieser Stelle auch die tatsächliche Position des neuen Menüs als Zahl eingegeben werden. Die Abfrage entfällt, wenn der Schalter POSITION/<buttonpos> mitgegeben wird.

Ausführung des Menüitems eingeben:

(Bsp.: EOJ)

Echo Kontextmenü1 aufgerufen

 

Als leicht nachzuvollziehendes Beispiel ist hier ein nur ein Echo und eine Leerzeile programmiert. Es können auch mehrere Kommandos eingegeben werden. Die Funktion läuft in einer Endlosschleife, die mit Enter, bzw. einer Leerzeile beendet wird. Dann folgt der nächste Button/Menüeintrag.

Style des Menüitems eingeben:

(MIS_TEXT, MIS_BITMAP, MIS_SUBMENU)

 

Befehl eingeben:

Die Eingabe von Enter beendet die Endlosschleife, in der die Funktion läuft.

Beispiel

Nach Eingabe der folgenden Zeilen, und dem Neustart von Moskito steht der Menü Punkt Test, unter dem Menüpunkt Datei, im Standard Menü zur Verfügung.

 

DefineWindowMenu attribute/0, position/1 name/Menu:Standard

n

j

MIS_TEXT

&Datei|Test

Echo Hallo Test

 

 

Siehe auch

DisplayWindowMenu

DeleteWindowMenu

DisplayMenuEntry

CreateDefaultWindow

Administratorhilfe „Menüs herstellen“