Problema con creazione Menu Contestuale (tasto dx)

di il
3 risposte

Problema con creazione Menu Contestuale (tasto dx)

Ciao a tutti, è un po' che sto cercando di crearmi un menu personalizzato su delle maschere (dove deve funzionare solo 'Filtra Testo'). Dopo tanto tribolare ero riuscito dopo vari tentativi a trovare un codice che funziona ... il problema è che dopo che ho utilizzato il menù creato da codice (ad esempio 'Cerca Testo' + 'Uguale a') access mi visualizza quello suo di default (che chiaramente sparisce cliccando sulla maschera).

Il codice che utilizzo è il seguente :

  Dim newMenu As CommandBarControl
  Dim cmb As CommandBar
  On Error Resume Next 'If menu with same name exists delete
  CommandBars("ShowDataShortcutMenu").Delete

   CommandBars("ShowDataShortcutMenu").Delete

    Set cmb = CommandBars.Add("ShowDataShortcutMenu", msoBarPopup, False, False)
 
       
        Set newMenu = cmb.Controls.Add(Type:=msoControlPopup)
        newMenu.Caption = "Cerca testo :"


        newMenu.Controls.Add msoControlButton, 10077, , , True    'Filter equals xx
        newMenu.Controls.Add msoControlButton, 10078, , , True    'Filter not equal to xx
        newMenu.Controls.Add msoControlButton, 10079, , , True    'Filter beings with xx
        newMenu.Controls.Add msoControlButton, 12696, , , True    'Filter does not beings with xx
        newMenu.Controls.Add msoControlButton, 10080, , , True    'Filter contains xx
        newMenu.Controls.Add msoControlButton, 10081, , , True    'Filter does not contains xx
        newMenu.Controls.Add msoControlButton, 10082, , , True    'Filter ends with xx
        newMenu.Controls.Add msoControlButton, 10083, , , True    'Filter ends with xx
        newMenu.Controls.Add msoControlButton, 12697, , , True    'Filter does not ends with xx



    Set cmb = Nothing
    Set newMenu = Nothing

CommandBars("ShowDataShortcutMenu").ShowPopup

Avete idea del motivo per cui si comporta in questo modo ? Consigli ?

Grazie in anticipo

3 Risposte

  • Re: Problema con creazione Menu Contestuale (tasto dx)

    Devi decidere come vuoi operare... il codice che hai scritto, che non mostra come e quando lo chiami... è sostanzialmente errato come concetto.

    Il menù si crea la prima volta, poi lo si richiama solo(salvo non venga usato in modo dinamico).
    Per renderlo effettivo quindi hai 2 Opzioni, lo attribuisci alla Maschera come MenuPopup dopo averlo creato
    
    Me.MenuBar="ShowDataShortcutMenu"
    ed a quel punto quando premi il RightClick esce lui... altrimenti devi disabilitare il MenuPopup della Form, intercettare il RightClick nella Maschera e chiamarlo con
    
    CommandBars("ShowDataShortcutMenu").ShowPopup
    P.s. fai attenzione che per come hai dichiarato gli Oggetti sei obbligato ad avere nei Riferimenti le LIB di Office... cosa non simpatica se poi vai a distribuire l'applicazione.
  • Re: Problema con creazione Menu Contestuale (tasto dx)

    @Alex ha scritto:


    Devi decidere come vuoi operare... il codice che hai scritto, che non mostra come e quando lo chiami... è sostanzialmente errato come concetto.

    Il menù si crea la prima volta, poi lo si richiama solo(salvo non venga usato in modo dinamico).
    Per renderlo effettivo quindi hai 2 Opzioni, lo attribuisci alla Maschera come MenuPopup dopo averlo creato
    
    Me.MenuBar="ShowDataShortcutMenu"
    ed a quel punto quando premi il RightClick esce lui... altrimenti devi disabilitare il MenuPopup della Form, intercettare il RightClick nella Maschera e chiamarlo con
    
    CommandBars("ShowDataShortcutMenu").ShowPopup
    P.s. fai attenzione che per come hai dichiarato gli Oggetti sei obbligato ad avere nei Riferimenti le LIB di Office... cosa non simpatica se poi vai a distribuire l'applicazione.
    Problema risolto ... ho creato una sub ShowDataShortcutMenu nel modulo nella quale ho copiato il codice che ho postato sopra. Poi ho impostato il menu scelta rapida delle maschere su "ShowDataShortcutMenu". Sembra funzionare. Grazie mille ... senza la tua risposta non mi sarebbe venuto in mente.
  • Re: Problema con creazione Menu Contestuale (tasto dx)

    Valuta bene quando esegui la CREAZIONE e se questa è Temporanea...!
    Se non è temporanea, non devi rifarla ad ogni apertura perchè verrà salvata nel DB... se è temporanea ti basta crearla su Apertura del DB, non generarla ad ogni apertura di Maschera...
Devi accedere o registrarti per scrivere nel forum
3 risposte