Informationen über einen Menü-Eintrag


Möchte man den Status eines Menü-Items herausfinden, bietet das API dafür die Funktion GetMenuItemInfo. Diese Funktion benötigt u.a. ein Record vom Typ TMenuItemInfo. Es muss zuerst initialisiert werden. Außerdem müssen wir in der fMask-Variablen angeben, an welchen Informationen wir interessiert sind. In diesem Fall ist es der Status des Eintrags. (Der Parameter kann weitere Angaben enthalten, die dann entsprechend OR-verknüpft werden müssten.)

MenuItemInfo.cbSize := sizeof(TMenuItemInfo);
MenuItemInfo.fMask  := MIIM_STATE;

Nun können wir die Funktion "GetMenuItemInfo" aufrufen, wobei wir das Ergebnis gleich an eine Bool-Variable weiterleiten:

isEnabled := (GetMenuItemInfo(hMenu,IDM_ITEM1,false,MenuItemInfo)) and
  (MenuItemInfo.fState and MFS_GRAYED = 0);



GetMenuState

Wenn Sie nur an den Statusinformationen eines Eintrags und nicht an weitergehenden Informationen interessiert sind, dann geht das auch mit der GetMenuState-Funktion. Unser Beispiel von eben reduziert sich damit auf diese eine Zeile:

isEnabled := GetMenuState(hMenu,IDM_ITEM1,MF_BYCOMMAND) <> MF_GRAYED;