Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Aumentare le potenzialità del controllo RichTextBox

Come anticipa il titolo, questo articolo ha lo scopo specifico di estendere la funzionalità di un controllo RichTextBox ed in particolare verso due direzioni.
Si vedrà infatti come copiare il testo inserito da un utente in una RichTextBox direttamente in un documento Word senza perderne la formattazione ed in secondo luogo come aggiungergli il supporto di un popup-menu.
Iniziamo dal primo punto. Molte delle nozioni incluse nel codice che stiamo per vedere sono riprese dal corso di Visual Basic per Word disponibile dall'Indice analitico degli articoli.
In ogni caso si analizzerà il codice passo per passo in modo da renderlo ancora più chiaro e comprensibile. Prima di cominciare però si dovrà selezionare dalla finestra Riferimenti la casella corrispondente a Microsoft Word x.0 Object Library come appare nell'immagine sottostante:



Prima di tutto sarà necessario pensare ad una nuova sessione di Word che sarà aperta dalla nostra applicazione, che chiamiamo ad esempio WordApp.
Sarà quindi d'obbligo dichiararla come nuova applicazione (ossia sessione di lavoro) Word, in questo modo:

Dim WordApp As Word.Application

Ora al caricamento di Form1 diamo un significato a WordApp permettendo di assumere il valore rappresentato dalla nuova sessione di Word che verrà aperta:

Private Sub Form_Load()
Set WordApp = New Word.Application
...

Attraverso questi due blocchi di codice sarà possibile aprire una nuova sessione di Word che però rimarrà invisibile finchè non si indicherà:

WordApp.Visible = True

Questa sessione sarà priva di documento al suo interno. Ecco perchè ne aggiungiamo adesso uno vuoto:

WordApp.Documents.Add

Aggiungiamo alla form un controllo RichTextBox selezionandolo dalla finestra 'Riferimenti' attraverso una procedura simile a quella descritta in precedenza.
Inseriamo ora il codice relativo alla pressione di un pulsante che verrà anch'esso incluso nel progetto. Vogliamo che alla pressione di tale pulsante gli Appunti (ossia la Clipboard) si riempia del testo inserito dall'utente nella RichTextBox:

Private Sub Command1_Click()
Clipboard.SetText RichTextBox1.TextRTF, vbCFRTF

Sarà poi sufficiente una linea di codice come la seguente:

WordApp.Selection.Paste
End Sub

per incollare nel documento Word tutto il contenuto della RichTextBox senza perderne la formattazione.
Passando invece al secondo punto di questo articolo, possiamo dire che come si sa, il controllo RTB non supporta alcun popup-menu, almeno come impostazione predefinita.
Per ovviare al problema possiamo utilizzare un semplicissimo espediente, ossia creare un popup-menu personalizzato (che cercheremo di far assomigliare il più possibile a quello di una TextBox) da visualizzare al verificarsi del'evento MouseDown.
Ad esempio creiamo un nuovo menu attraverso l'editor di menu. Il menu deve avere la seguente struttura: Menu
...Annulla
...-
...Taglia
...Copia
...Incolla
...Elimina
...-
...Seleziona tutto
Si può inserire i nomi a piacimento. Bisogna però avere l'accortezza di impostare la proprietà Visible di Menu ossia della voce dell'unico menu principale dell'applicazione su False.
Cosa che può essere fatta direttamente dall'editor di menu deselezionando la casella Visible.
Ecco quindi il codice. Una volta premuto col tasto destro del mouse sulla RTB apparirà il popup-menu:

Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = vbRightButton Then
Me.PopupMenu Menu
End If
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