Discussione:
Commandbars - VBA
(troppo vecchio per rispondere)
linhalfin
2004-12-19 11:39:49 UTC
Permalink
salve a tutti, dobbiamo disabilitare alcune voci su un menu
personalizzato da vba, purtroppo nè la guida in ilnea nè il
visualizzatore oggetti nè google nè i nostri 4 manuali di access ci
hanno aiutato; non riusciamo a ricavare un riferimento a una precisa
voce di sottomenu in modo da poterla disabilitare, per intenderci
riusciamo a disabilitare "file->salva" ma non "strumenti->replica->crea
replica" qualcuno sà indicare documentazione in proposito sul web?
grazie.
Karl Donaubauer
2004-12-19 12:09:47 UTC
Permalink
Post by linhalfin
salve a tutti, dobbiamo disabilitare alcune voci su un menu
personalizzato da vba, purtroppo nè la guida in ilnea nè il
visualizzatore oggetti nè google nè i nostri 4 manuali di access ci
hanno aiutato; non riusciamo a ricavare un riferimento a una precisa
voce di sottomenu in modo da poterla disabilitare, per intenderci
riusciamo a disabilitare "file->salva" ma non
"strumenti->replica->crea replica" qualcuno sà indicare
documentazione in proposito sul web?
Solo in tedesco.
Ma in genere ci sono due metodi per ricavare il riferimento:

1. con index/posizione p.e. qc. come
Application.CommandBars("Menu Bar").Controls.Item(7). _
Controls.Item(8).Controls.Item(2).Enabled = False

2. con il nome/caption
...
Application.CommandBars("Menu Bar").Controls("strumenti"). _
Controls("replica").Controls("crea replica").Enabled = False

Se ci sono tre punti per un dialogo alla fine del caption come in
tedesco o inglese:
Application.CommandBars("Menu Bar").Controls("strumenti"). _
Controls("replica").Controls("crea replica...").Enabled = False
--
HTH
Karl
*********
Access-FAQ http://www.donkarl.com/it
linhalfin
2004-12-24 15:33:12 UTC
Permalink
Post by Karl Donaubauer
Post by linhalfin
salve a tutti, dobbiamo disabilitare alcune voci su un menu
personalizzato da vba, purtroppo nè la guida in ilnea nè il
visualizzatore oggetti nè google nè i nostri 4 manuali di access ci
hanno aiutato; non riusciamo a ricavare un riferimento a una precisa
voce di sottomenu in modo da poterla disabilitare, per intenderci
riusciamo a disabilitare "file->salva" ma non
"strumenti->replica->crea replica" qualcuno sà indicare
documentazione in proposito sul web?
Solo in tedesco.
1. con index/posizione p.e. qc. come
Application.CommandBars("Menu Bar").Controls.Item(7). _
Controls.Item(8).Controls.Item(2).Enabled = False
2. con il nome/caption
...
Application.CommandBars("Menu Bar").Controls("strumenti"). _
Controls("replica").Controls("crea replica").Enabled = False
Se ci sono tre punti per un dialogo alla fine del caption come in
Application.CommandBars("Menu Bar").Controls("strumenti"). _
Controls("replica").Controls("crea replica...").Enabled = False
Grazie Karl, chiedo scusa se rispondo in ritardo ma siamo stati
impegnati nello sviluppo dell'applicazione :) noi tentavamo di creare
una funzione per costruire dinamicamente i menu (a runtime); per ora ci
siamo accontentati di costruirlo staticamente usando poi FindControl per
aggiornare dinamicamente le impostazioni, le osservazioni Tue e di
Alessadro sono state illuminanti in proposito :)
Proveremo nei prossimi giorni e daremo un feedback.

ALESSANDRO Baraldi
2004-12-19 12:13:02 UTC
Permalink
Post by linhalfin
salve a tutti, dobbiamo disabilitare alcune voci su un menu
personalizzato da vba, purtroppo nè la guida in ilnea nè il
visualizzatore oggetti nè google nè i nostri 4 manuali di access ci
hanno aiutato; non riusciamo a ricavare un riferimento a una precisa
voce di sottomenu in modo da poterla disabilitare, per intenderci
riusciamo a disabilitare "file->salva" ma non "strumenti->replica->crea
replica" qualcuno sà indicare documentazione in proposito sul web?
grazie.
La struttura CommandBar è complessa:

Dim cbCommandBarControl As Object 'CommandBarControl

cbCommandBarControl = Application.CommandBars("Menu
Bar").Controls("&Strumenti")

'Questo punta all'Insieme Strumenti del Menù principale.
'All'interno di questa classe ciclandola troverete l'elenco dei SubItem

Dim cbc As Object 'CommandBarControl
For Each cbc In cbCommandBarControl.Controls
Debug.Print "Caption = "cbc.Caption
Debug.Print "Id = " = cbc.Id
Debug.Print "Type = " = cbc.Type
Next cbc

Trovata "Replica" che in realtà sarà "R&eplica" assegnate ad un oggetto
questo puntatore.
Ora l'oggetto in questione ti espone il suo subItem un CommandBarPopup
che iterandolo ti permette di trovare quello che cerchi....!

Questo è giusto per capire la struttura.
Un'alternativa è usare FindControl metodo di CommandBars

Set myControl = Application.CommandBars.FindControl _
(Type:=msoControlPopup, Tag:="&Crea Replica...")

myControl.Enabled=False

Non ho provato, mi sono limitato a leggere l'Help anch'io, ma chissà che
in tanti salti fuori la soluzione...!

Ciao
--
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------
linhalfin
2004-12-24 15:32:27 UTC
Permalink
Post by ALESSANDRO Baraldi
Post by linhalfin
salve a tutti, dobbiamo disabilitare alcune voci su un menu
personalizzato da vba, purtroppo nè la guida in ilnea nè il
visualizzatore oggetti nè google nè i nostri 4 manuali di access ci
hanno aiutato; non riusciamo a ricavare un riferimento a una precisa
voce di sottomenu in modo da poterla disabilitare, per intenderci
riusciamo a disabilitare "file->salva" ma non "strumenti->replica->crea
replica" qualcuno sà indicare documentazione in proposito sul web?
grazie.
Dim cbCommandBarControl As Object 'CommandBarControl
cbCommandBarControl = Application.CommandBars("Menu
Bar").Controls("&Strumenti")
'Questo punta all'Insieme Strumenti del Menù principale.
'All'interno di questa classe ciclandola troverete l'elenco dei SubItem
Dim cbc As Object 'CommandBarControl
For Each cbc In cbCommandBarControl.Controls
Debug.Print "Caption = "cbc.Caption
Debug.Print "Id = " = cbc.Id
Debug.Print "Type = " = cbc.Type
Next cbc
Trovata "Replica" che in realtà sarà "R&eplica" assegnate ad un oggetto
questo puntatore.
Ora l'oggetto in questione ti espone il suo subItem un CommandBarPopup
che iterandolo ti permette di trovare quello che cerchi....!
Questo è giusto per capire la struttura.
Un'alternativa è usare FindControl metodo di CommandBars
Set myControl = Application.CommandBars.FindControl _
(Type:=msoControlPopup, Tag:="&Crea Replica...")
myControl.Enabled=False
Non ho provato, mi sono limitato a leggere l'Help anch'io, ma chissà che
in tanti salti fuori la soluzione...!
Ciao
Alessandro, grazie per la dritta, FindControl è cervellotica, mi piace
di più la prima soluzione che hai prospettato, ci avevamo provato senza
successo, riproviamo e Ti facciamo sapere, purtroppo spesso la
documentazione di microsoft lascia alquanto a desiderare.
Ciao.
Loading...