WinMenuContext
obj -> WinMenuContext(alpha1, int2, int3[, int4]) : int
Anzeige eines Kontextmenüs
Details
- obj: Deskriptor des Eltern-Objekts
- alpha1: Name des Kontextmenüs
- int2: horizontale Position
- int3: vertikale Position
- int4:
- Optionen (optional):
_WinMenuContextDefault_WinMenuContextReturnID
- Resultat:
intFehlerwert oderMenuIddes gewählten Menüpunkts - Siehe: Verwandte Befehle
Mit dieser Anwesiung kann prozedural ein Kontextmenü angezeigt werden. Als Eltern-Objekt (obj) muss der Deskriptor eines Oberflächen-Objekts angegeben werden.
In (alpha1) wird der Name des Kontextmenüs angegeben. Wird hier eine leere Zeichenkette übergeben, wird das Kontextmenü des übergebenen Objekts (siehe MenuNameCntxt) verwendet. Ist diese Eigenschaft nicht gesetzt oder bei dem Objekt nicht vorhanden, wird der Laufzeitfehler _ErrValueInvalid erzeugt.
Die Argumente (int2) und (int3) definieren die Position an der das Menü dargestellt wird. Enthalten beide Werte -1, dann wird das Menü an der aktuellen Position des Mauszeigers angezeigt. Im anderen Fall wird hier eine Position relativ zur linken oberen Ecke des übergebenen Eltern-Objektes angegeben. Handelt es sich bei dem Objekt jedoch um einen TrayFrame , dann geben die Argumente die Position relativ zum Ursprung des primären Bildschirms an.
Das Kontextmenü kann in zwei Modi betrieben werden. Der Modus wird im Parameter (int4) übergeben. Folgende Konstanten können übergeben werden:
_WinMenuContextDefault ( 0 )
(default)
Wählt der Anwender einen Menüpunkt aus, dann wird das Ereignis EvtMenuCommand durchgeführt. In diesem Fall wird immer _ErrOk als Resultat zurückgegen.
_WinMenuContextReturnID ( 1 )
Wählt der Anwender einen Menüpunkt aus, wird lediglich der Wert der Eigenschaft MenuId des ausgewählten MenuItem -Objektes zurückgeliefert. Ist die MenuId<0 wird der absolute Betrag geliefert, damit kein Konflikt mit Fehlerwerten (< 0) resultiert.
Verlässt der Anwender das Menü ohne einen Menüpunkt auszuwählen, wird _ErrOk zurückgeliefert. Es muss darauf geachtet werden, das für MenuId nur Werte größer 0 definiert werden, wenn das Menü in diesem Modus betrieben werden soll.
In beiden Modi werden die Ereignisse EvtMenuContext und EvtMenuInitPopup des übergebenen Objektes durchgeführt, sofern sie dort eingetragen sind.
Resultate:
Findet die Verarbeitung des ausgewählten Menüpunkts in der EvtMenuCommand statt, wird immer _ErrOk zurückgegeben.
Wird der Modus _WinMenuContextReturnID verwendet, wird nach dem Anklicken des Menüeintrags dessen MenuId zurückgegeben. Ist die MenuId negativ, wird der Wert in eine positive Zahl gewandelt, um Konflikte mit Fehlerwerten zu vermeiden.
Bei der Rückgabe von _ErrUnavailable konnte das in (alpha1) angegebene Menü nicht gefunden werden. Verfügt der Benutzer nicht über ausreichende Rechte, um das Menü auszuführen, wird _ErrRights zurückgegeben.
Mögliche Laufzeitfehler:
_ErrHdlInvalid: In (obj) wurde kein Oberflächen-Objekt übergeben._ErrValueInvalid: Bei dem übergebenen Objekt ist die EigenschaftMenuNameCntxtleer oder nicht vorhanden und in (alpha1) wurde kein Menü übergeben.