Zum Hauptinhalt springen

Beispiel - UserInfo / EvtMenuInitPopup

Beispiel - UserInfo / EvtMenuInitPopup Aktivieren / Deaktivieren von Menüpunkten

In diesem Beispiel sollen in Abhängigkeit des angemeldeten Benutzers verschiedene Menüeinträge in einem Menü aktiviert bzw. deaktiviert werden. Im Ereignis EvtMenuInitPopup des Frames wird die unten angegebene Funktion eingetragen. Beim Öffnen eines Menüs oder des Kontextmenüs des Fensters werden dann entsprechende Menüeinträge verändert.

Dazu wird zunächst die Benutzergruppe, die der Benutzer angehört, ermittelt. Gehört der Benutzer keiner Gruppe an, wird der Benutzername als Gruppe verwendet.

Anschließend wird die Eigenschaft Custom überprüft, ob die Benutzergruppe oder der Benutzername in der Eigenschaft eingetragen wurde. Die Eigenschaft Disabled wird dann auf false gesetzt, wenn kein Benutzer oder der aktuelle Benutzer in der Eigenschaft eingetragen ist.

sub EvtMenuInitPopup
(
aEvt : event; // Ereignis
aMenuItem : int; // auslösender Menüpunkt
) : logic;

local
{
tHdlMenuRoot : int;
tHdlMenuItem : int;
tCurrentUserGroup : alpha(20);
}

{
// Benutzergruppe ermitteln
UserInfo(_UserCurrent); // Benutzerstruktur laden
tCurrentUserGroup # UserInfo(_UserGroup); // Benutzergruppe ermitteln
if (tCurrentUserGroup = '')
{
// Benutzer ist keiner Gruppe zugeordnet
tCurrentUserGroup # UserInfo(_UserName);
}

tHdlMenuRoot # aMenuItem;
if (aMenuItem = 0)
{
// Kontextmenü
tHdlMenuRoot # WinInfo(aEvt:Obj, _WinContextMenu);
}

tHdlMenuItem # tHdlMenuRoot->WinInfo(_WinFirst);
while (tHdlMenuItem != 0)
{
switch (true)
{
case (tHdlMenuItem->wpCustom = '') :
tHdlMenuItem->wpDisabled # false;
case (StrFind(tHdlMenuItem->wpCustom, tCurrentUserGroup, 1) > 0) :
tHdlMenuItem->wpDisabled # false;
case (StrFind(tHdlMenuItem->wpCustom, tCurrentUserGroup, 1) = 0) :
tHdlMenuItem->wpDisabled # true;
}

tHdlMenuItem # tHdlMenuItem->WinInfo(_WinNext);
}

return(true);
}