Condividi tramite

Access 2013 - Disattivare un controllo in una ribbon

Anonimo
2015-05-26T10:15:12+00:00

Ciao a tutti

Ho questo menù come record della tabella UsysRibbon :

Nella maschera msk_lista_clienti è associata la barra Ges_clienti che è il nome della ribbon il cui codice è riportato di seguito :

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="DisattivaTasti">

  <ribbon startFromScratch="true">

    <tabs>

      <tab id="tabGes_Clienti" label="Operatività Clienti">

        <group id="grpAnagrafiche" label="Gestione ">

         <button id="cmdNuovo" label="Aggiungi" onAction="Nuovo_cliente" imageMso="MailMergeSelectRecipients" size="large" />

          <button id="cmdEdit" label="Modifica" onAction="Modifica_cliente"  imageMso="FilePrepareMenu" size="large" />

        </group>

      </tab>

    </tabs>

  </ribbon>

</customUI>

Adesso vorrei disattivare il pulsante di modifica button id="cmdEdit" label="Modifica"  e mi sono mosso in questo modo :

Function in un modulo chiamata DisattivaTasti :

Option Compare Database

Option Explicit

Public gobjRibbon As IRibbonU 

Sub DisattivaTasto(ribbon As IRibbonUI)

    ' Cache a copy of RibbonUI.

    Set gobjRibbon = ribbon

End Sub

Poi all’evento Open della maschera ho inserito :

gobjRibbon.InvalidateControl (“cmdEdit”)

mi restituisce il messaggio Variabile oggetto non impostata.

Ho notato che non chiama la function nel modulo dall’evento onLoad della ribbon .

Come posso sistemare questa cosa secondo voi ?

Grazie a tutti.

Microsoft 365 e Office | Accesso | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

11 risposte

Ordina per: Più utili
  1. Anonimo
    2015-05-26T11:14:53+00:00

    Ciao,

    nel codice Xml aggiungi :

     <button id="cmdEdit" label="Modifica" onAction="Modifica_cliente"  imageMso="FilePrepareMenu" size="large" getEnabled="onGetEnabled" />

    Definisci in un modulo la funzione:

    Public Sub onGetEnabled(control As IRibbonControl, Optional ByRef enabled)

    'Condizione per abilitare/disabilitare il controllo  ad esempio:

    If CurrentForm.Name = "xxxxxxx" Then

         If control.Id = "cmdEdit" Then

            enabled = False

         else

            enabled=true

         End If

    End If

    End Function

    Dove necessario richiami:

    gobjRibbon.InvalidateControl (“cmdEdit”)

    Mimmo

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2015-05-26T15:49:09+00:00

    Funziona grazie.

    Adesso vorrei fare una cosa più articolata, francamente non saprei da dove iniziare e se si può fare :

    ho una maschera a schede, il cui menù ribbon è così strutturato :

    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" >

    <ribbon startFromScratch="true">

    <tabs>

    <tab id="tabGes_Clienti" label="Dati Clienti">

    <group id="grpAnagrafiche" label="Dati Anagrafici ">

    <button id="cmdSalva" label="Salva Modifiche" onAction="Salva_Clienti" imageMso="AcceptInvitation" size="large" />

    <button id="cmdEsci" label="Esci" onAction="Esci_Clienti" imageMso="PrintPreviewClose" size="large" />

    </group>

    </tab>

    <tab id="tabGes_spediz" label="Indirizzi Spedizione">

    <group id="grpSpedizioni" label="Indirizzi Spedizione ">

    <button id="cmdNuovo_s" label="Aggiungi spedizione" onAction="Nuovo_cliente_sp" imageMso="AddOrRemoveAttendees" size="large" getEnabled="onGetEnabled" />

    <button id="cmdEdit_s" label="Modifica spedizione" onAction="Modifica_cliente_sp" imageMso="FilePrepareMenu" size="large" getEnabled="onGetEnabled" />

    </group>

    </tab>

    </tabs>

    </ribbon>

    </customUI>

    Al tab della maschera Dati anagrafici vorrei che il menù (i controlli relativi) relativo agli indirizzi di spedizione fosse disabilitato (e qui potrei usare le istruzioni che getilmente mi avete insegnato) . Poi però, passando dal Tab dati anagrafici al Tab Indirizzi spedizione  (tabGes_Spediz), il controlli relativi a questa ribbon li vorrei attivare , ma soprattutto vorrei che passasse direttamente nel Ribbon Tab  “Indirizzi di Spedizione” . Quest’ultima cosa si può fare ?

    Grazie di nuovo per la pazienza.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-05-26T13:01:13+00:00

    Ho notato solo ora l'istruzione:

    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="DisattivaTasti">

    Sul caricamento della Ribbon, parametro onLoad, devi impostare una funzione ad es CaricaRibbon che effettua l'assegnazione della ribbon ad un tuo oggetto di tipo Ribbon come myRibbon:

    Public Sub CaricaRibbon(theRibbon As IRibbonUI)

        Set myRibbon = theRibbon

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-05-26T10:12:28+00:00

    Ciao a tutti

    Ho questo menù come record della tabella UsysRibbon :

    Nella maschera msk_lista_clienti è associata la barra Ges_clienti che è il nome della ribbon il cui codice è riportato di seguito :

    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="DisattivaTasti">

      <ribbon startFromScratch="true">

        <tabs>

          <tab id="tabGes_Clienti" label="Operatività Clienti">

            <group id="grpAnagrafiche" label="Gestione ">

             <button id="cmdNuovo" label="Aggiungi" onAction="Nuovo_cliente" imageMso="MailMergeSelectRecipients" size="large" />

              <button id="cmdEdit" label="Modifica" onAction="Modifica_cliente"  imageMso="FilePrepareMenu" size="large" />

            </group>

          </tab>

        </tabs>

      </ribbon>

    </customUI>

    Adesso vorrei disattivare il pulsante di modifica button id="cmdEdit" label="Modifica"  e mi sono mosso in questo modo :

    Function in un modulo chiamata DisattivaTasti :

    Option Compare Database

    Option Explicit

    Public gobjRibbon As IRibbonU 

    Sub DisattivaTasto(ribbon As IRibbonUI)

        ' Cache a copy of RibbonUI.

        Set gobjRibbon = ribbon

    End Sub

    Poi all’evento Open della maschera ho inserito :

    gobjRibbon.InvalidateControl (“cmdEdit”)

    mi restituisce il messaggio Variabile oggetto non impostata.

    Ho notato che non chiama la function nel modulo dall’evento onLoad della ribbon .

    Come posso sistemare questa cosa secondo voi ?

    Grazie a tutti.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2015-05-26T10:11:58+00:00

    Ho questo menù come record della tabella UsysRibbon :

    Nella maschera msk_lista_clienti è associata la barra Ges_clienti che è il nome della ribbon il cui codice è riportato di seguito :

    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="DisattivaTasti">

      <ribbon startFromScratch="true">

        <tabs>

          <tab id="tabGes_Clienti" label="Operatività Clienti">

            <group id="grpAnagrafiche" label="Gestione ">

             <button id="cmdNuovo" label="Aggiungi" onAction="Nuovo_cliente" imageMso="MailMergeSelectRecipients" size="large" />

              <button id="cmdEdit" label="Modifica" onAction="Modifica_cliente"  imageMso="FilePrepareMenu" size="large" />

            </group>

          </tab>

        </tabs>

      </ribbon>

    </customUI>

    Adesso vorrei disattivare il pulsante di modifica button id="cmdEdit" label="Modifica"  e mi sono mosso in questo modo :

    Function in un modulo chiamata DisattivaTasti :

    Option Compare Database

    Option Explicit

    Public gobjRibbon As IRibbonUI

    Sub DisattivaTasto(ribbon As IRibbonUI)

        ' Cache a copy of RibbonUI.

        Set gobjRibbon = ribbon

    End Sub

    Poi all’evento Open della maschera ho inserito :

    gobjRibbon.InvalidateControl (“cmdEdit”)

    mi restituisce il messaggio Variabile oggetto non impostata.

    Ho notato che non chiama la function nel modulo dall’evento onLoad della ribbon .

    Come posso sistemare questa cosa secondo voi ?

    Grazie a tutti.

    La risposta è stata utile?

    0 commenti Nessun commento