@MENU id, table
Menu
-Tag
mit der Präprozessor-Anweisung @DISPLAY oder dem Befehl CreateDisplay()
kann die Menüleiste einem neuen Display zugeteilt werden.
Sie müssen dieser Präprozessor-Anweisung eine ID für die Menüleiste sowie die tatsächlichen Menüdefinition übergeben. Menüs werden als Baumstruktur definiert, die eine Haupttabelle mit verschiedenen Untertabellen enthält. Es gibt zwei verschiedene Arten von Untertabellen:
Die folgenden Tags können Sie für Menüpunkttabellen verwenden:
ID:
Flags:
#MENUITEM_TOGGLE:
#MENUITEM_SELECTED
Flags (siehe unten). Der Zustand des Toggle-Menüpunktes kann mit
dem Befehl IsMenuItemSelected() überprüft werden.
#MENUITEM_RADIO:
#MENUITEM_RADIO
gesetzt haben, werden in die gleiche Menüpunktgruppe
aufgenommen. Alle Menüpunkte innerhalb einer Menüpunktgruppe
schließen sich gegenseitig aus, d.h. es kann jeweils nur ein
Menüpunkt einer Menüpunktgruppe aktiv sein. Sie können den
Zustand eines Menüpunktgruppen-Eintrags manuell ändern, indem
Sie den Befehl SelectMenuItem() aufrufen oder den Flag #MENUITEM_SELECTED
setzen (siehe unten). Der Status einer Menüpunktgruppe kann
durch den Befehl IsMenuItemSelected() überprüft
werden. Da Menüpunktgruppen immer ein aktives Element benötigen,
ist es nicht möglich, DeselectMenuItem() auf einem Menüpunktgruppen-Eintrag
aufzurufen. Wenn Sie einen Menüpunktgruppen-Eintrag deselektieren
möchten, müssen Sie mit SelectMenuItem() einen anderen
Menüpunktgruppen-Eintrag auswählen und dann wird der zuvor ausgewählte
Menüpunktgruppen-Eintrag automatisch deselektiert. (V7.1)
#MENUITEM_SELECTED:
#MENUITEM_TOGGLE
oder #MENUITEM_RADIO
zum erstellen eines
Toggle- oder Radio-Menüpunktes festgelegt haben, können Sie diesen Flag
setzen, um das Menüelement in den ausgewählten Status zu versetzen. Siehe oben
für weitere Informationen zu den Menüoptionen für Toggle- und Radio-Menüpunkte.
#MENUITEM_DISABLED:
Hotkey:
Menüleisten können auch mit dem Befehl CreateMenu() während der Laufzeit erstellt werden. Siehe CreateMenu für Details.
Sie können ein Menü mit dem Befehl SetDisplayAttributes(),
mit dem Menu
-Tag in der Präprozessor-Anweisung @DISPLAY
oder dem Befehl CreateDisplay() einem Display zuweisen. Um
eine Menüleiste von einem Display zu lösen, setzen Sie beim
Menu
-Tag vom Befehl SetDisplayAttributes() den besonderen
Wert -1.
Um informiert zu werden, wenn der Benutzer Elemente aus dem
Menü auswählt, müssen Sie den Ereignis-Handler OnMenuSelect
installieren. Dies kann mit dem Befehl InstallEventHandler()
erfolgen. Siehe InstallEventHandler für Details.
Bitte beachten Sie, dass Menüleisten Displays im Vollbildmodus nicht unterstützen. Sie werden nur dann funktionieren, wenn Ihr Display im Fenstermodus läuft.
Beachten Sie, dass es unter Android normalerweise nicht möglich
ist, Menüelemente in der Stammebene des Optionsmenüs der Aktionsleiste
zu platzieren, da Menüelemente auf Desktopsystemen immer Mitglieder
bestimmter Stammgruppen sein müssen (z.B. "Datei", "Bearbeiten",
"Ansicht" usw.). Es gibt keine Menüelemente außerhalb solcher
Stammgruppen. Wenn Sie Menüleisten unter Android verwenden,
repliziert Hollywood natürlich das Verhalten des Desktop-Menüs,
indem Sie für diese Stammgruppen eigene Untermenüs erstellen.
Das bedeutet jedoch, dass der Benutzer mindestens zweimal auf
tippen muss, um ein Menüelement auszuwählen, da sich in der
Stammebene keine Menüelemente befinden. Diese werden stattdessen
immer in Untermenüs angezeigt. Wenn Sie nicht möchten, dass
Hollywood diese Untermenüs erstellt, sondern alle Elemente in
der Stammebene platziert, setzen Sie den Tag SingleMenu
mit der
Präprozessor-Anweisung @DISPLAY auf True
.
Dies ist besonders nützlich, wenn es nur wenige Menüpunkte gibt
und es nicht sinnvoll ist, sie in Untermenüs zu platzieren.
Beachten Sie auch, dass Menüleisten derzeit nicht von Linux und iOS unterstützt werden.
@MENU 1, { {"File", { {"New", ID = "new"}, {"Open...", ID = "open"}, {""}, {"Close", ID = "close", Flags = #MENUITEM_DISABLED}, {""}, {"Save", Flags = #MENUITEM_DISABLED, Hotkey = "S"}, {"Compress", ID = "cmp", Flags = #MENUITEM_TOGGLE}, {""}, {"Export image...", { {"JPEG...", ID = "jpeg"}, {"PNG...", ID = "png"}, {"BMP...", ID = "bmp"}}}, {""}, {"Dump state", ID = "dump"}, {""}, {"Quit", ID = "quit", Hotkey = "Q"}}}, {"Edit", { {"Cut", ID = "cut"}, {"Copy", ID = "copy"}, {"Paste", ID = "paste"}}}, {"?", { {"About...", ID = "about"}}} } @DISPLAY {Menu = 1}Der obige Code erzeugt eine Menüleiste, die dann dem Standarddisplay zugewiesen wird.