světNotes.cz

Dostupnosť menu príkazov v Notes klientovi.
Novinky
30.11.2002 - Miroslav Uhlár

Nižšie uvedený kód umiestnite do tlačítka, ktoré zobrazí rozhodovacie okno s dvomi možnosťami:
/1/ Ak zvolíte Yes, menu príkaz File-Export je dostupný (enabled)
/2/ Ak zvolíte No, menu príkaz File-Export je nedostupný (disabled)

Teraz je už úplne jednoduché zneprístupniť v konkrétnej aplikácii menu File-Export. Ale pozor! Ide iba o zneprístupnenie menu príkazu, nie funkcie ako takej....

Const MF_BYPOSITION = &H00000400
Const MF_ENABLED = &H00000000
Const MF_GRAYED = &H00000001
Const MF_DISABLED = &H00000002
Declare Function WIN32_GetActiveWindow Lib {user32} Alias {GetActiveWindow} ( ) As Long
Declare Function WIN32_GetMenu Lib {user32} Alias {GetMenu} ( Byval hWnd As Long ) As Long
Declare Function WIN32_GetSubMenu Lib {user32} Alias {GetSubMenu} ( Byval hMenu As Long , Byval nPos As Long ) As Long
Declare Function WIN32_GetMenuString Lib {user32} Alias {GetMenuStringA} ( Byval hMenu As Long , Byval wIDItem As Long , Byval lpString As String , Byval nMaxCount As Long , Byval wFlag As Long ) As Long

Declare Function WIN32_ModifyMenu Lib {user32} Alias {ModifyMenuA} ( Byval hMenu As Long , Byval nPosition As Long , Byval wFlags As Long , Byval wIDNewItem As Long , Byval lpString As Any ) As Long


Function ShowHide ( Byval intFlag As Integer ) As Integer

Dim hWnd As Long
Dim hMenu As Long
Dim hSubMenuFile As Long
Dim strBuffer As String * 255
Dim strMenuItem As String
Dim lngAPIReturnValue As Long
Dim intPrintMenuItemPos As Integer

'Pozícia pre EXPORT menu príkaz
intPrintMenuItemPos = 11
hWnd = WIN32_GetActiveWindow ( ) ' Chytíť okno
hMenu = WIN32_GetMenu ( hWnd ) 'Chytiť menu
hSubMenuFile = WIN32_GetSubMenu ( hMenu , 0 ) ' Chytiť "File" - podmenu
strBuffer = Space ( Len ( strBuffer ) )

lngAPIReturnValue = WIN32_GetMenuString ( hSubMenuFile , intPrintMenuItemPos , strBuffer , Len ( strBuffer ) , MF_BYPOSITION )
If lngAPIReturnValue > 0 Then
strMenuItem = Left$ ( strBuffer , lngAPIReturnValue )
If intFlag = True Then
fnShowPrintMenuItem = WIN32_ModifyMenu ( hSubMenuFile , intPrintMenuItemPos , MF_BYPOSITION Or MF_ENABLED , 0 , strMenuItem )
Else
fnShowPrintMenuItem = WIN32_ModifyMenu ( hSubMenuFile , intPrintMenuItemPos , MF_BYPOSITION Or MF_GRAYED , 0 , strMenuItem )
End If
End If

End Function


Sub Click(Source As Button)
If Messagebox ( {Zapni Export (tlačítko Yes) alebo Vypni Export (tlačítko No)} , 36 , {Otázka} ) = 6 Then
Call ShowHide ( True )
Else
Call ShowHide ( False )
End If
End Sub