Oggetto Baloon

    
    Possiamo aggiungere un tocco di classe alle nostre applicazioni usando al posto di MsgBox il fumetto dell'assistente di Office. Nel prossimo esempio vediamo come utilizzarlo.
    Sub Assistente()
        Dim Ass As Office.Balloon
        Set Ass = Assistant.NewBalloon
        With Ass
            .Icon = msoIconAlertInfo
            .Heading = "Utilizzo dell'assistente"
            .Text = "Ecco un esempio di utilizzo dell'assistente"
            .Labels(1).Text = "elenco di voci - 1"
            .Labels(2).Text = "elenco di voci - 2"
            .CheckBoxes(1).Text = "Casella di controllo"
            .BalloonType = msoBalloonTypeNumbers
            .Mode = msoModeModeless
            .Callback = "Prova"
            .Button = msoButtonSetOK
            .Show
        End With
    End Sub
    
    Sub Prova(Ass As Balloon, lbtn As Long, _
     lPriv As Long)
        Assistant.Animation = msoAnimationEmptyTrash
        Ass.Close
    End Sub
        
    L'oggetto "Assistant" rappresenta l'Assistente di Microsoft Office, mentre l'oggetto "Balloon" rappresenta il fumetto nel quale l'Assistente di Office visualizza le informazioni. La proprietà "NewBalloon" crea una nuova istanza dell' oggetto Balloon. Le prime 2 righe dichiarano una nuova istanza del fumetto dell'assistente di Office e lo assegna alla variabile "Ass".
    All'interno del blocco With sono definite le proprietà del fumetto.
    • La proprietà Icon definisce l'icona in alto a destra del fumetto.
    • La proprietà Heading definisce l'intestazione del fumetto.
    • La proprietà Text definisce il testo del fumetto.
    • Le proprietà Labels definiscono una serie di voci di elenco all'interno del fumetto. La voce compare ogni volta che aggiungiamo un valore alla proprietà text di Labels e ne sono permesse un massimo di 5.
    • La proprietà CheckBox definisce una casella di controllo all'interno del fumetto. La casella compare ogni volta che aggiungiamo un valore alla proprietà text e ne sono permesse un massimo di 5.
    • La proprietà BalloonType indica il tipo di elenco delle Labels.
    • La proprietà Mode imposta il comportamento del fumetto. Sono possibili 3 opzioni.
      • Modal blocca l'elaborazione finchè non viene chiuso il fumetto.
      • AutoDown il fumetto viene chiuso automaticamente quando clicco un qualsiasi punto dello schermo.
      • Modeless posso continuare a lavorare col fumetto aperto devo impostare callback che indica cosa deve fare quando chiudo.
    • La proprietà Button indica che tipo di pulsanti visualizzare nella parte inferiore del fumetto.
    • La proprietà Show mostra il fumetto.
    Nel nostro esempio abbiamo utilizzato un fumetto di tipo Modeless. A differenza delle altre, questa tipologia necessita della proprietà di CallBack che indica la routine che viene chiamata dopo la chiusura del fumetto. La funzione richiamata da CallBack deve contenere il metodo Close dell'oggetto Balloon creato nel modulo chiamante. L'istanza dell'oggetto Balloon viene passato come parametro alla routine chiamata. Nel nostro caso specifico abbiamo inserito l'istruzione Animation riferita all'oggetto Assistant la quale genera un'animazione dell'oggetto Assistente di Office.
    Se l'assistente è in stato non attivo, quindi non disponibile, non riusciremo a visualizzare il nostro messaggio tramite il fumetto. Per ovviare a questo possiamo attivare l'assistente dalla voce "Mostra l'assistente di Office" del menù "?". Tuttavia nello scrivere un'applicazione che utilizzi l'oggetto Balloon, sorge la necessità di testare applicativamente, tramite routine VBA, lo stato dell'assistente. La proprietà "On" testa se lo stato dell'assistente è abilitato. Se la proprietà è True possiamo gestire il fumetto altrimenti è possibile visualizzare le informazioni tramite MsgBox. Se l'assistente non è visibile nel monitor non è detto che sia disattivato. Può essere solamente nascosto, nel qual caso il il messaggio è tranquillamente visualizzabile dal fumetto. Lo stato nascosto è dato dalla proprietà "Visible".
    La routine "Messaggi" imposta le informazioni da visualizzare e le passa alla routine "MessaggiAssistente" che in base al valore della proprietà "On" visualizza una MsgBox o il fumetto dell'Assistente.
    Sub Messaggi()
        MessaggiAssistente "Eccomi", "Se l'assistente è" & _ 
        "disattivato vedi una finestra di messaggio"
    End Sub
    
    Sub MessaggiAssistente(Testo As String, _ 
    	Descrizione As String)
        If Assistant.On = True Then  
           Dim Ass As Office.Balloon
           Set Ass = Assistant.NewBalloon
           With Ass
              .Icon = msoIconAlertInfo
              .Heading = Testo
              .Text = Descrizione
              .Button = msoButtonSetOK
              .Show
           End With
        Else
           MsgBox Descrizione, vbInformation, Testo
        End If
    End Sub