La creazione di un progetto da zero in Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Creare un Add-In (Quarta parte)

Riassumiamobrevemente quanto ottenuto finora. Siamo giunti alla compilazione dei quella che possiamo considerare la struttura base della nostra aggiunta. Struttura che si compone dei quattro eventi fondamentali di ogni Add-In. All'interno di IDTExtensibility_OnConnection abbiamo inserito un rimando all'oggetto Err in caso di errore generico e per finire abbiamo impostato la visualizzazione di una finestra di dialogo che, al caricamento dell'aggiunta, avvisa l'utente del caricamento della stessa nell'IDE di Visual Basic.
Il codice completo fino a questo momento lo si può trovare alla fine dell'articolo "Creare un Add-In (Terza parte)".

Ciò che faremo questa volta sarà particolarmente spettacolare dal punto di vista dell'integrazione tra aggiunta e IDE di Visual Basic: inseriremo infatti nel menu a discesa che compare selezionando la voce "Strumenti" dal menu principale di Visual Basic, il riferimento alla nostra applicazione con la sua relativa icona (che per semplicità sarà il file bitmap "bollicine.bmp" contenuto nella cartella "C:\Windows").
Un esempio di quanto detto è questo:


Prima di tutto dovremo assegnare a VBI un puntatore all'oggetto VBA dell'IDE corrente di Visual Basic che viene quindi passato come parametro alla routine OnConnection. Viene conservato perché sarà necessario in seguito per scollegare l'aggiunta:

Public VBI As VBIDE.VBE

Adesso pensiamo alla barra dei comandi di Visual Basic, necessaria per gestire l'inserimento della voce 'Ridimensiona' come oggetto-menu.
Per fare ciò sarà necessario fare riferimento all'oggetto CommandBarControl contenuto nella libreria Office x.0 Object Library che abbiamo importato nel progetto durante il primo articolo.
Quello che dovremo fare adesso sarà dichiarare il controllo 'barra dei comandi di Visual Basic'.
Così, nella sezione generale del modulo di classe ossia in alto, prima di qualsiasi sottoprocedura inseriamo la dichiarazione:

Private mcbMenuCommandBarCtrl As Office.CommandBarControl

Una volta indicata la barra dei comandi sulla quale si intende agire, bisognerà includere un riferimento alla routine di gestione dell'evento click del nuovo controllo barra dei comandi.
Aggiungiamo quindi, sempre nella sezione generale del modulo di classe:

Private WithEvents MenuHandler As CommandBarEvents

Ora passiamo all'evento OnConnection che abbiamo studiato durante l'articolo precedente.
Nel caso in cui la gestione dell'errore inserita nella seconda lezione crei in qualche modo problemi si può tranquillamente eliminare o sostituire con:

On Error Resume Next

Il codice che vedremo adesso dovrà essere inserito dopo la funzione MsgBox che può essere a questo punto eliminata in quanto non più molto utile.
Salviamo dunque l'istanza corrente di Visual Basic tramite questa linea di codice:

Set VBI = VBInst

Adesso facciamo spazio nel menu Strumenti di Visual Basic per la nuova voce che aggiungeremo:

Set mcbMenuCommandBarCtrl = VBI.CommandBars("Tools").Controls.Add(before:=3)

Dove Tools indica a quale voce del menu principale di Visual Basic si sta facendo riferimento. Se ci riferiamo al menu 'Strumenti' dovremo indicare appunto 'Tools'.
Inoltre 3 indica la posizione della nuova voce. Nel nostro caso intendiamo inserire l'oggetto-menu 'Ridimensiona' come terza voce del menu a partire dall'alto, come mostra la prima figura sopra.
Siccome vogliamo che questa voce del menu sia la prima di un gruppo (e per adesso l'unica), inseriamo di seguito:

mcbMenuCommandBarCtrl.BeginGroup = True

istruzione che inserisce una linee di separazione prima della voce 'Ridimensiona'.
Se vogliamo una seconda barra separatrice dopo la voce 'Ridimensiona':

VBI.CommandBars("Tools").Controls(4).BeginGroup = True

che indica che nel menu 'Tools' ossia nel menu Strumenti la quarta voce (quella dopo 'Ridimensiona') è l'inizio di un gruppo di voci di menu (un gruppo di voci è separato dagli altri elementi del menu attraverso due barre di separazione) Impostiamo adesso il titolo dell'aggiunta ossia la frase o la parola che verrà visualizzata nel menu:

mcbMenuCommandBarCtrl.Caption = "Ridimensiona"

Facciamo un altro passo in avanti: memorizziamo negli Appunti un'immagine bitmap da inserire a fianco del testo (e precisamente alla sua sinistra) all'interno del menu. Prendiamo come riferimento un'immagine classica di Windows, che tutti dovrebbero avere all'interno della cartella "C:\Windows" ossia l'immagine 'Bollicine.bmp'. In ogni caso è possibile modificare tale bitmap con qualsiasi altra immagine valida:

Clipboard.SetData LoadPicture("C:\Windows\bollicine.bmp")

Passiamo ora ad incollare l'immagine dagli appunti all'oggetto 'barra degli strumenti':

mcbMenuCommandBarCtrl.PasteFace

Ora dobbiamo pensare a ricevere e gestire gli eventi del nuovo controllo barra dei comandi.

Set MenuHandler = VBI.Events.CommandBarEvents (mcbMenuCommandBarCtrl)

Il codice da inserire nell'evento OnConnection è terminato. Possiamo però evitare problemi di qualsiasi genere semplicemente eliminando la voce che abbiamo inserito al collegamento dell'aggiunta.
Nell'evento OnDisconnection immettiamo questa semplice linea di codice:

mcbMenuCommandBarCtrl.Delete

ed il codice è completato. Riassumiamo di seguito il listato completo per questo quarto articolo:

Implements IDTExtensibility
Public VBI As VBIDE.VBE
Private mcbMenuCommandBarCtrl As Office.CommandBarControl
Private WithEvents MenuHandler As CommandBarEvents
Private Sub IDTExtensibility_OnConnection(ByVal VBInst As Object, ByVal ConnectMode As _
VBIDE.vbext_ConnectMode, ByVal AddInInst As VBIDE.AddIn, custom() As Variant)
On Error GoTo ErroreGenerico
MsgBox "L'aggiunta è stata caricata con successo!"
Set VBI = VBInst
Set mcbMenuCommandBarCtrl = VBI.CommandBars("Tools").Controls.Add(before:=3)
mcbMenuCommandBarCtrl.BeginGroup = True
VBI.CommandBars("Tools").Controls(4).BeginGroup = True
mcbMenuCommandBarCtrl.Caption = "Ridimensiona"
Clipboard.SetData LoadPicture("C:\Windows\bollicine.bmp")
mcbMenuCommandBarCtrl.PasteFace
Set MenuHandler = VBI.Events.CommandBarEvents (mcbMenuCommandBarCtrl)
ErroreGenerico:
MsgBox Err.Description
Exit Sub
End Sub
Private Sub IDTExtensibility_OnDisconnection(ByVal RemoveMode As VBIDE.vbext_DisconnectMode, _
custom() As Variant)
mcbMenuCommandBarCtrl.Delete
End Sub
Private Sub IDTExtensibility_OnStartupComplete (custom() As Variant)
'codice
End Sub
Private Sub IDTExtensibility_OnAddInsUpdate (custom() As Variant)
'codice
End Sub



Archivio:ndexed
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it