Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Come effettuare una stampa di una stringa tramite l'oggetto Print (Articolo completo)
di BARBATI Federico


Di solito nelle applicazioni in Visual Basic, per visualizzare il testo si utilizzano controlli predefiniti tipo Label e Text. Tuttavia, in determinate situazioni, potrebbe servire visualizzare un testo in un form o stamparlo su carta senza usare il limitato DataReport fornito con Visual Basic 6.0.
Per il nostro scopo, è utile conoscere l'oggetto Print.
Print, viene utilizzato per determinare un output o a video o a stampante ad esempio, Form1.Print "Questa è una prova!" determina la scritta Questa è una prova (vds fig.1), oppure Printer.Print "Questa è una prova!", determina una stampa di questa scritta.


Per ragioni di semplicità tratteremo la stampa su Form e in modo non esaustivo.
Ovviamente la stringa da stampare può essere memorizzata in una variabile:

Dim Stringa As String
Stringa = "Questa è una prova!"
Form1.Print Stringa

e quindi alla stessa possono essere applicate le funzioni relative alle stringhe ad esempio Ltrim() per eliminare gli spazi iniziali, Rtrim() per eliminare gli spazi finali e Trim() per eliminare sia gli spazi iniziali che finali.
Per determinare la posizione dove verrà stampato (video o stampante) il messaggio, vengono utilizzate le proprietà CurrentX e CurrentY.
Ritornando all'esempio di prima, volendo visualizzare la stringa partendo dal centro del form, utilizzeremo il seguente codice:


Dim Stringa As String
Stringa = "Questa è una prova!"
' imposto la coordinata di partenza X a metà della
' larghezza del form
Form1.CurrentX = ScaleWidth / 2
' imposto la coordinata di partenza Y a metà della
' lunghezza del form
Form1.CurrentY = ScaleHeight / 2
Form1.Print Stringa




Mentre per stamparla al centro del form:

Dim Stringa As String
Stringa = "Questa è una prova!"
Form1.CurrentX = (ScaleWidth - TextWidth(Stringa)) / 2
Form1.CurrentY = (ScaleHeight - TextHeight(Stringa)) / 2
Form1.Print Stringa




I metodi TextWidth e TextHeight determinano rispettivamente la larghezza e l'altezza della stringa che verrà stampata in base al Font selezionato. Fin qui tutto bene, il problema nasce quando la stringa da stampare è più larga dell'area a disposizione (o più larga del foglio nel caso della stampante).

Dim Stringa As String
Stringa = "Ei fu siccome immobile dato il mortal sospiro" _
& " stette la spoglia immemore orba di tanto spiro"
Form1.Print Stringa

Come si nota nella figura 4, la stringa viene troncata nel momento che raggiunge la larghezza massima del Form.


A questo proposito, potrebbe esserci di aiuto un nuova funzione introdotta con Visual Basic 6.0: Split(). La funzione Split(), suddivide una stringa in elementi delimitati, la sintassi è la seguente:

array() = Split(Source, [Delimiter], [Limit], [CompareMethod])

dove Source è la stringa da suddividere, Delimiter è il carattere utilizzato per delimitare i singoli elementi (se omesso viene usato lo spazio), Limit è un intero positivo per limitare il numero di elementi trovati ed infine per eseguire ricerche non sensibili alle lettere minuscole e maiuscole, si può passare il valore vbTextCompare all'ultimo argomento.
In pratica: array() = Split(Questa è una prova!), trasforma array() in un array a base zero con quattro elementi:
array(0)=Questa
array(1)=è
array(2)=una
array(3)=prova!
Ovviamente il carattere di delimitazione (in questo caso lo spazio), è stato eliminato.
Il seguente codice, mostra come utilizzare questa funzione, in modo che una stringa più larga dello spazio a disposizione, possa adattarsi ad un form di qualsiasi dimensione:

Dim Stringa, Parole, i, Frase1, Frase2
Stringa = "Ei fu siccome immobile dato il mortal "& _
"sospiro stette la spoglia immemore orba di tanto spiro"
Parole = Split(Stringa)
Frase1 = ""
Frase2 = ""
For i = Lbound(Parole) To Ubound(Parole)
Frase1 = Frase1 & " " & Parole(i)
If TextWidth(Frase1) < ScaleWidth Then
Frase2 = Frase1
Else
Print Ltrim(Frase2)
Frase1 = Parole(i)
End If
Next
Print Frase1



In questo caso la differenza con la figura 4, mostra che la frase non viene troncata ma si adatta dinamicamente alla dimensione del Form. Questo codice (sicuramente migliorabile ma molto compatto), con dei piccoli cambiamenti e aggiunte, potrebbe tornare molto utile quando si deve stampare su carta il contenuto di un oggetto Text con la proprietà Multiline = True.
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