Změna značky zaškrtnuté volby v menu

Postup:
Do modulu zapište následující deklarace:

'struktura pro použití API funkcí
Public Type MENUITEMINFO
   cbSize As Long
   fMask As Long
   fType As Long
   fState As Long
   wID As Long
   hSubMenu As Long
   hbmpChecked As Long
   hbmpUnchecked As Long
   dwItemData As Long
   dwTypeData As String
   cch As Long
End Type

'konstanty pro API funkce
Public Const MIIM_STATE = &H1
Public Const MIIM_ID = &H2
Public Const MIIM_SUBMENU = &H4
Public Const MIIM_CHECKMARKS = &H8
Public Const MIIM_TYPE = &H10
Public Const MIIM_DATA = &H20
Public Const MFT_RADIOCHECK = &H200&

'deklarace API funkcí
Public Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" (ByVal hmenu As Long, ByVal uItem As Long, ByVal fByPosition As Long, lpmii As MENUITEMINFO) As Long
Public Declare Function GetMenu Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function GetSubMenu Lib "user32" (ByVal hmenu As Long, ByVal nPos As Long) As Long

*každá deklarace musí být na samostatné řádce

Do projektu vložte nový formulář, nazvěte jej Form1.
Ve formuláři založte novou funkci SetMenuRadio:

Private Function SetMenuRadio(Mnu As Menu, ByVal BarPos As Long, ByVal MenuPos As Long)

Dim M As MENUITEMINFO
Dim hmenu As Long
hmenu = GetSubMenu(GetMenu(Mnu.Parent.hWnd), BarPos)
M.cbSize = Len(M)
M.fMask = MIIM_TYPE
M.fType = MFT_RADIOCHECK
M.fState = 0
M.wID = 0
M.hSubMenu = 0
M.hbmpChecked = 0
M.hbmpUnchecked = 0
M.dwItemData = 0
M.dwTypeData = Mnu.Caption & Chr$(0)
M.cch = 0
SetMenuItemInfo hmenu, MenuPos, 1, M

End Function

Ve formuláři nadefinujte nové menu se třemi volbami, které se jmenují Menu a mají index 1-3.

Na událost Load formuláře pak vložte následující kód:

Private Sub Form_Load()

SetMenuRadio Menu(1), 0, 0
SetMenuRadio Menu(2), 0, 1
SetMenuRadio Menu(3), 0, 2

End Sub

Zpět

Autor: The Bozena

iReklama.cz - nový reklamní systém
iReklama.cz - nový reklamní systém