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 (Sesta parte)

Eliminare l'icona alla chiusura dell'aggiunta si rivela un compito semplice, tuttavia richiede un po' più di ragionamento rispetto alla rimozione della voce del menu Strumenti.
Innanzitutto bisogna individuare la posizione all'interno della toolbar di Visual Basic nella quale è stata aggiunta l'icona. Non è consigliabile fidarsi del fatto che, disponendo sempre dello stesso numero di icone sulla toolbar ed inserendo l'icona sempre in ultima posizione, molto probabilmente la figura apparirà sempre al ventesimo-ventunesimo posto.
Basterà infatti caricare un'altra aggiunta a sballare tutti i calcoli.
E' quindi meglio individuare la posizione in maniera sicura e rimuovere l'icona in quella posizione ad ogni chiusura dell'aggiunta.
A tale scopo, entriamo nel codice dell'evento OnDisconnection di IDTExtensibility.
L'indice che corrisponde alla posizione dell'icona di 'Ridimensiona' è:

mcbMenuCommandBar.Index

per cui sarà sufficiente inserire nel codice del suddetto evento la procedura di eliminazione del pulsante con indice Index:

VBI.CommandBars("Standard").Controls(mcbMenuCommandBar.Index).Delete (True)

Converrà in ogni caso fare delle prove di caricamento/scaricamento dell'aggiunta (ricordandosi ogni volta di compilare il progetto DLLActiveX e magari di salvarlo).
Apriamo una piccola parentesi prima di continuare. E'possibile ricevere un messaggio di errore nel momento in cui si avvia la compilazione del progetto, del tipo:


Questa finestra apparirà abbastanza familiare poichè spesso ci si dimentica di scaricare l'aggiunta prima di compilare il progetto: Visual Basic non può modificare una DLLActiveX in esecuzione.
Adesso dobbiamo solamente spingerci un po' più avanti, richiamando nell'evento OnConnection una form da visualizzare nell'IDE di Visual Basic.
Il risultato che si otterrà sarà molto efficace in termini di gestione dei componenti di Visual Basic. Abbiamo visto infatti i concetti fondamentali della struttura di un'aggiunta. Sarà quindi possibile riprendere tali concetti al termine di questa serie di articoli e trasferirli in un vero e proprio progetto Add-In (quello ottenibile attraverso la procedura guidata) per creare un'aggiunta professionale, dove professionale significa dotata di una form ancorabile.
Ciò che otterremo col progetto Ridimensiona non sarà un granchè dal punto di vista dell'interfaccia in quanto essa non fa propriamente parte di Visual Basic. Certo, garantisce un'interazione completa ma una form ancorabile che quindi fa parte in tutto e per tutto di Visual Basic è tutta un'altra cosa.
Essendo però questo argomento più avanzato rispetto a tutto ciò che dobbiamo ancora vedere, lasciamolo per ultimo...
Includiamo una form nel progetto attraverso Progetto->Inserisci form. Lasciamole il nome di default ossia Form1.
Gestiamo la visibilità della form, caricandola in memoria non appena l'aggiunta è stata caricata, visualizzandola alla pressione del tasto 'bollicine' sulla toolbar o sulla voce del menu Strumenti di Visual Basic ed eliminandola alla chiusura dell'aggiunta (o di Visual Basic).
Nell'evento OnConnection:

Load Form1

Negli eventi legati alla toolbar e al menu (CommandBarEvents cioè rispettivamente MenuHandler e MenuHandler2) dobbiamo inserire il codice che fa apparire la form al click del mouse.
Inseriamo nell'evento MenuHandler_Click:

Form1.Show

e lo stesso facciamo per MenuHandler2_Click:

Form1.Show

Per finire gestiamo la chiusura dell'aggiunta. In OnDisconnection inseriamo:

Unload Form1

E così abbiamo dato un senso alla presenza di molti eventi nei quali era stata inserita solo una semplice linea di commento.
Si può quindi eliminare le finestre di messaggio che ci indicavano da dove avevamo richiamato l'aggiunta: icona sulla toolbar o voce nel menu Strumenti.
Ora preoccupiamoci di dare un'aspetto utile all'interfaccia con cui l'utente dovrà operare. Ci serviranno due controlli Label, due TextBox, due CommandButton e due OptionButton.
Per ricordarci cosa stiamo facendo possiamo impostare la Caption di Form1 come "Ridimensiona".
L'interfaccia (a parte l'ordine di disposizione dei controlli sul piano) dovrebbe più o meno corrispondere a quanto mostrato nella figura qui sotto:


Pensiamo adesso a rinominare i vari controlli. La Caption di Form1 come già detto potrebbe essere impostata come "Ridimensiona", il controllo Label1 come "Altezza %", Label2 come "Lunghezza %", Option1 come "I controlli selezionati", Option2 come "Tutti i controlli", Command1 come "Applica" ed infine Command2 come "Cancella".
I controlli Text1 e Text2 possono essere impostati con un testo nullo ("") in quanto spetterà all'utente il compito di inserire i valori che rappresentano la percentuale delle dimensioni dei vari controlli.
La form potrebbe dunque avere questo aspetto:


Nel corso del prossimo articolo svilupperemo il codice di Form1, codice non particolarmente lungo ed impegnativo. Successivamente si vedrà come rendere questa finestra ancorabile a tutte le altre finestre dell'IDE di Visual Basic. Prima di terminare però riassumiamo il codice completo fino a questo articolo:

Implements IDTExtensibility
Public VBI As VBIDE.VBE
Private mcbMenuCommandBarCtrl As Office.CommandBarControl
Private mcbMenuCommandBar As Office.CommandBarControl
Private WithEvents MenuHandler As CommandBarEvents
Private WithEvents MenuHandler2 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)
If VBI.CommandBars("Standard").Visible = True Then
Set mcbMenuCommandBar = VBI.CommandBars("Standard").Controls.Add(1, , , VBI.CommandBars("Standard") _
.Controls.Count)
Clipboard.SetData LoadPicture("C:\Windows\bollicine.bmp")
mcbMenuCommandBar.PasteFace
mcbMenuCommandBar.Caption = "Ridimensiona"
Set MenuHandler2 = VBI.Events.CommandBarEvents(mcbMenuCommandBar) End IF
Load Form1
Exit Sub
ErroreGenerico:
MsgBox Err.Description
Exit Sub
End Sub
Private Sub IDTExtensibility_OnDisconnection(ByVal RemoveMode As VBIDE.vbext_DisconnectMode, _
custom() As Variant)
mcbMenuCommandBarCtrl.Delete
VBI.CommandBars("Standard").Controls(mcbMenuCommandBar.Index).Delete (True)
End Sub
Private Sub IDTExtensibility_OnStartupComplete (custom() As Variant)
'codice
End Sub
Private Sub IDTExtensibility_OnAddInsUpdate (custom() As Variant)
'codice
End Sub
Private Sub MenuHandler_Click(ByVal CommandBarControl As Object, handled As Boolean, _
CancelDefault As Boolean)
MsgBox "Si è fatto clic sulla voce " & mcbMenuCommandBarCtrl.Caption
Form1.Show
End Sub
Private Sub MenuHandler2_Click(ByVal CommandBarControl As Object, handled As Boolean, _
CancelDefault As Boolean)
MsgBox "Si è fatto clic sull'icona"
Form1.Show
End Sub

Nel prossimo articolo vedremo come eliminare l'icona una volta scaricata l'aggiunta. Comunque sarà eliminata automaticamente alla chiusura di Visual Basic o cliccando col tasto destro sul mouse su di essa, scegliendo 'Personalizza...' e 'Reimposta'.

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