Access 2013 Visualizzare/nascondere barra menu personalizzata

di il
6 risposte

Access 2013 Visualizzare/nascondere barra menu personalizzata

Ciao a tutti. Dunque ho creato una barra personalizzata con immagini personalizzate.
Ho usato due tabelle UsysRibbonsImages, e Ribbons. Tutto funziona perfettamente. Ho caricato la barra con l'istruzione
Function CaricaRibbon()
    ribbonName = DLookup("ribbonName", "Ribbons", "Id=1") 'carico il nome 
    strXml = DLookup("RibbonXML", "Ribbons", "Id=1")		' carico la stringa XML
    Application.LoadCustomUI ribbonName, strXml		' passo all'applicazione le info
End Function
1° problema: utilizzando un ciclo per verificare le barre aperte visualizzate il nome della mia barra non risulta.
2° problema: Chiaramente nella gestione della barra attivare/disattivare tale barra non riesco a farlo.
Nella fattispecie apro un report in anteprima
DoCmd.OpenReport "Anagrafiche", acPreview
Si apre automaticamente la barra di anteprima di stampa.
A questo punto vorrei nascondere la mia barra e lasciare visualizzata solo la "print preview".
Ma tutte le istruzioni provate per disattivarla non funzionano.
Grazie per il vostro aiuto

6 Risposte

  • Re: Access 2013 Visualizzare/nascondere barra menu personalizzata

    Risolto. Grazie a tutti per l'aiuto . Ho sbattuto x oltre una settimana su non so quanti siti e quanto codice. Alla fine ho capito il problema. La barra di un menu non si attiva/nasconde con comandi da VBA bensi attraverso proprietà dei tag in XML.
    Premesso che si sappia già realizzare un menu attraverso l'uso di una tabella UsysRibbons e il relativo codice XML, di seguito proverò a sintetizzare il tutto. L'interazione con un form o un report deriva
    1) dalle proprietà (in modalità struttura) di quest'ultimi che richiamano la barra desiderata attraverso la proprietà "Nome barra multifunzione" presente nella scheda "Altro";
    2) dagli eventi di forms o reports (tipo Load o Close) desiderati impostati come istruzione con:
    globalRibbon.Invalidate
    dove globalRibbon è una variabile globale dichiarata in un modulo che indica il nome della barra dichiarato nel campo "RibbonName" della tabella UsysRibbon.
    Queste due modalità richiamano una chiamata di callback impostata nella proprietà getVisible
    getVisible="nome della routine che si vuole richiamare"
    per visualizzare/nascondere una barra, una scheda o un pulsante, o la proprietà getEnabled
    getEnabled="nome della routine che si vuole richiamare"
    per abilitare o disabilitare un singolo controllo, il tutto impostato attraverso l'XML memorizzato nella tabella UsysRibbon.
    Queste routine sono memorizzate in un modulo, ed all'interno di ognuna di esse con il codice opportuno si possono eseguire le operazioni prima descritte. Di seguito il codice per mostrare/nascondere
    Public Sub OnGetVisible(ctl As IRibbonControl, ByRef visible)
    
        If ruoloUser = "" Then
               visible = False
            Exit Sub
        End If
     	' se si accede come amministratore  ne mostra la barra 
        If ruoloUser = "Administrator" Then
             visible = True
        End If
        ' se si accede come user nasconde la barra di amministratore
        If ruoloUser = "User" Then
             Select Case ctl.ID
                Case "tab1"
                    visible = True
                Case "tab2"
                    visible = (ruoloUser = "Administrator") 'ruoloUser è una variabile globale string 
            End Select
        End If
    
    End Sub
    oppure per abilitare/disabilitare un controllo o una scheda
    Sub GetEnabled(control As IRibbonControl, ByRef enabled)
      Select Case control.id
        Case "btnON"
          [b]enabled [/b]= bolEnabled	'variabile globale
        Case "btnOff"
          enabled = Not (bolEnabled)
      End Select
    End Sub
    Ultima cosa la chiamata sulla proprietà "OnLoad" dell'XML non è più quella da me scritta nel primo post bensì la seguente:
    Public Sub OnRibbonLoad(ribbon As IRibbonUI)
        ' salva una copia den ribbon per usi successivi del DB
        Set globalRibbon = ribbon
    End Sub
    Mi auguro di essermi spiegato e di aver fatto cosa utile per qualcuno.

    Certo se Microsoft avesse realizzato una documentazione efficace...
  • Re: Access 2013 Visualizzare/nascondere barra menu personalizzata

    Devi scusarmi, ma francamente un po per colpa mia che ho avuto poco tempo, non ho contestualizzato la domanda, che invece riconduco ora che ho letto la risposta che ti sei dato....

    In tutti i modi, se può esserti utile, quì trovi ESEMPI estremamente completi di tutto:


    Corretto link.
  • Re: Access 2013 Visualizzare/nascondere barra menu personalizzata

    Grazie @Alex.
    Forse il link è a questo tread
  • Re: Access 2013 Visualizzare/nascondere barra menu personalizzata

    Scusandomi per l'errato copia/incolla del link... questo è quello corretto:
  • Re: Access 2013 Visualizzare/nascondere barra menu personalizzata

    Grazie Alex per avermi aggiornato il link. Link che avevo già visitato più volte, downloadato più file e studiatone il codice.
    Ma, poichè sono un insegnante, presumo di supporre, che talvolta questo aiuto non è sufficiente.
    Ritengo che una guida, intesa come spiegazione, possa valere più di un codice. E per gli inesperti quest'ultimo è come parlare in arabo.
    Ecco perchè, sopra, mi sono permesso di cercare di spiegare come ho risolto il problema.
    Grazie comunque per la tua presenza, per i consigli che propini a tutti e per la tua fattiva disponibilità.
  • Re: Access 2013 Visualizzare/nascondere barra menu personalizzata

    guitarpin ha scritto:


    Grazie Alex per avermi aggiornato il link. Link che avevo già visitato più volte, downloadato più file e studiatone il codice.
    Ma, poichè sono un insegnante, presumo di supporre, che talvolta questo aiuto non è sufficiente.
    Ritengo che una guida, intesa come spiegazione, possa valere più di un codice. E per gli inesperti quest'ultimo è come parlare in arabo.
    Ecco perchè, sopra, mi sono permesso di cercare di spiegare come ho risolto il problema.
    Grazie comunque per la tua presenza, per i consigli che propini a tutti e per la tua fattiva disponibilità.
    Mi dici cose che spero sempre di sentire da chi partecipa... ovvero "indicatemi una GUIDA"... purtroppo... quando poi indichi la guida 9 su 10 dicono di non capirci nulla ed alcuni snobbano i sggerimenti pretendendo gli esempi...!

    Quindi apprezzo molto il tuo approccio, purtroppo l'argomento è veramente trattato male dalla MS... motivo per cui in taluni casi, io tendo a farmi un reverse engineering per arrivare al metodo, esattamente come hai fatto tu.

    Sul fatto sia trattato male, lascia spazio a chi poi pubblica Libri specializzati, per poter fare il completamento... e non sono certo sia proprio non voluto dal momento che poi sono i maggiori partecipanti allo sviluppo del prodotto.

    Quì trovi qualche cosa... ma come vedi è sempre tutto molto frazionato e mai completissimo...
    https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/ribbon
    https://docs.microsoft.com/it-it/office/vba/api/Access.Application.LoadCustomUI

    https://support.office.com/en-us/article/create-a-custom-ribbon-in-access-45e110b9-531c-46ed-ab3a-4e25bc9413de


    Ho impiegato qualche gg per capire bene come funzionasse il tutto... ma direttamente dallo studio completo dei Download di Gunter.
Devi accedere o registrarti per scrivere nel forum
6 risposte