Möchte man den Status eines Menü-Items herausfinden, bietet das API dafür die Funktion
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);
Wenn Sie nur an den Statusinformationen eines Eintrags und nicht an weitergehenden Informationen interessiert sind, dann geht das auch mit der
isEnabled := GetMenuState(hMenu,IDM_ITEM1,MF_BYCOMMAND) <> MF_GRAYED;