Polnjenje menija tik pred odpiranjem
Vnosi menija so odvisni od trenutnega zapisa – „Blokiraj“ samo pri aktivnih strankah, zadnji dokumenti stranke –, zato se meni napolni vsakič, ko se odpre.
Zahteva WKL Forms Object Library 1.26 ali novejšo različico.
Pregled rešitve
WklButton sproži DropDown tik preden se njegov meni odpre – s klikom, tipko, ShowMenu ali bralnikom zaslona.
Dogodkovna procedura meni počisti (ClearMenu) in doda vnose za trenutni zapis (AddMenuItem, AddMenuSeparator);
MenuItemClick sporoči izbiro. Spremembe v pogledu obrazca se ne shranijo z obrazcem.
Izvedba
Private Sub btnDejanja_DropDown()
Dim rs As DAO.Recordset
With Me!btnDejanja.Object
.ClearMenu
.AddMenuItem "blokiraj", "&Blokiraj", "E72E", Enabled:=Me!Aktivna, Reason:="Stranka je že blokirana."
.AddMenuItem "posta", "Pošlji &e-pošto", "E715", "Ctrl+M"
.AddMenuItem "dokumenti", "&Dokumenti"
Set rs = CurrentDb.OpenRecordset("SELECT TOP 5 DokumentID, Naslov FROM tblDokumenti WHERE StrankaID = " & Me!StrankaID & " ORDER BY Datum DESC")
Do Until rs.EOF
.AddMenuItem "doc" & rs!DokumentID, rs!Naslov, Parent:="dokumenti"
rs.MoveNext
Loop
rs.Close
End With
End Sub
Private Sub btnDejanja_MenuItemClick(ByVal Key As String)
If Key Like "doc*" Then
DoCmd.OpenForm "frmDokument", WhereCondition:="DokumentID = " & Mid$(Key, 4)
ElseIf Key = "blokiraj" Then
Me!Aktivna = False
End If
End Sub
Opombe
- Vnos, pod katerim so drugi vnosi („Dokumenti“), odpre svoj podmeni in sam nikoli ni sporočen; če podmeni nima vnosov, je vnos prikazan brez puščice, njegova izbira pa sproži
MenuItemClick. - Besedilo bližnjice („Ctrl+M“) je samo za prikaz; tipko obravnavajte v
Form_KeyDownsKeyPreview. - Onemogočen vnos pokaže svoj razlog kot zaslonski namig, ko kazalec miruje na njem.
- Če je meni po
DropDownprazen, se ne odpre.
Sorodne teme
sl/wiki/msaccess/comctl/how-to/fill-a-menu-before-it-opens.txt · Zuletzt geändert: von Wolfgang van der Stille