Differenze tra le versioni di "Stampare il testo presente in oggetti di testo"
(18 versioni intermedie di 2 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
− | Per poter stampare il testo presente in | + | Per poter stampare il testo presente in ''Controlli'' grafici che supportano il testo, come ad esempio ''Textabel'', ''Label'', ''TextArea'', etc, possiamo utilizzare la procedura con la Classe ''Printer'', oppure utilizzare il codice HTML. |
− | |||
=Uso della Classe ''Printer''= | =Uso della Classe ''Printer''= | ||
− | L'uso della Classe ''Printer'' permette di stampare con le sole risorse di Gambas. Potremo adottare il seguente codice: | + | L'uso della Classe ''Printer'' permette di stampare con le sole risorse di Gambas. <SUP>[[[#Note|nota 1]]]</sup> |
− | + | <BR>Potremo adottare il seguente codice: | |
+ | Public Sub Form_Open() | ||
+ | |||
+ | Label1.Font = Font["Bitstream Charter,Bold,16"] | ||
+ | Label1.Text = "aaaaa bbbbb ccccc ddddd" | ||
+ | |||
+ | TextLabel1.Font = Font["Ubuntu, Italic,12"] | ||
+ | TextLabel1.Text = "aaaaa bbbbb ccccc ddddd" | ||
+ | |||
+ | End | ||
+ | |||
+ | Public Sub Button1_Click() | ||
With Printer1 | With Printer1 | ||
Riga 11: | Riga 21: | ||
.Paper = 2 | .Paper = 2 | ||
.Resolution = Desktop.Resolution | .Resolution = Desktop.Resolution | ||
+ | <FONT color=#006400>' ''Se si vuole creare un file PDF, si dovrà impostare la Proprietà ".OutputFile":''</font> | ||
+ | <FONT color=gray>' '''.OutputFile''' = "/tmp/stampa.pdf"</font> | ||
.Print | .Print | ||
End With | End With | ||
− | + | End | |
+ | Public Sub Printer1_Draw() | ||
− | + | Dim ob As Object | |
− | + | With Paint | |
+ | For Each ob In Me.Children | ||
+ | <FONT color=#006400>' ''E' possibile impostare eventualmente il Font, la dimensione e lo stile dei caratteri, anche conformemente ai parametri già impostati nei Controlli grafici, di cui si deve stampare il testo mostrato:''</font> | ||
+ | If Object.Type(ob) = "Label" Then | ||
+ | .Font = Font["Bitstream Charter,Bold,16"] | ||
+ | Else | ||
+ | .Font = Font["Ubuntu, Italic,12"] | ||
+ | Endif | ||
+ | <FONT color=#006400>' ''Individua e imposta lo spazio ove far stampare i caratteri:''</font> | ||
+ | .Text(ob.Text, ob.X, ob.Y, ob.W, ob.H) | ||
+ | .Fill | ||
+ | Next | ||
+ | End With | ||
− | + | End | |
− | + | Questo algoritmo, ad ogni modo, consente di stampare anche il testo assegnato alle Proprietà ".Text" e ".RichText" di qualsiasi Oggetto che le possegga. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | Questo algoritmo, ad ogni modo, consente di stampare anche il testo assegnato alle | ||
− | |||
=Uso del codice HTML= | =Uso del codice HTML= | ||
− | L'uso del codice HTML determinerà | + | L'uso del codice HTML determinerà l'apertura ''automatica'' e contestuale del browser predefinito nel sistema, dove sarà visualizzato il contenuto da stampare, e della consueta finestra di dialogo per la stampa. Potremo adottare, ad esempio, il seguente codice: |
− | + | Private preHtml As String | |
− | + | Public Sub Form_Open() | |
<FONT color=006400>' ''Questo è il codice HTML essenziale per stampare automaticamente:''</font> | <FONT color=006400>' ''Questo è il codice HTML essenziale per stampare automaticamente:''</font> | ||
− | + | preHtml = "<FONT color=#B22222><HTML>\n<BODY onload = \"self.print()\"></font>" | |
− | |||
− | |||
+ | End | ||
− | + | Public Sub Button1_Click() | |
− | <FONT color=006400>' ''Al codice HTML essenziale per stampare | + | <FONT color=006400>' ''Al codice HTML essenziale per stampare aggiungiamo il testo da stampare:''</font> |
− | + | preHtml &= TextEdit1.RichText & "</body>\n</html>\n" <FONT color=gray>'</font> <SUP>[[[#Note|nota 2]]]</sup> <SUP>[[[#Note|nota 3]]]</sup> | |
− | |||
− | <FONT color=006400>' '' | + | <FONT color=006400>' ''Salva il nuovo codice, comprensivo del testo da stampare, in un file "HTML":''</font> |
− | + | File.Save("/tmp/prova.html", preHtml) | |
− | |||
− | <FONT color=006400>' '' | + | <FONT color=006400>' ''Richiama e apre il file HTML con il metodo "Desktop.Open" (è necessario attivare il componente "gb.desktop"):''</font> |
− | + | Desktop.Open("/tmp/prova.html") | |
− | ''' | + | End |
− | + | ||
+ | Se non si vuole ottenere l'apertura ''automatica'' della finestra di dialogo per la stampa del foglio HTML, si potrà far comparire un tasto virtuale sul foglio medesimo, sul quale premere per far mostrare la finestra di dialogo della stampa. In tal caso, si dovrà sostituire la variabile globale ''preHtml'' del precedente codice con la seguente: | ||
+ | Private preHtml As String = "<FONT color=#B22222><HTML>\n" & | ||
+ | "<META http-equiv=\"Content-type\" content=\"text/html;charset=utf-8\">\n" & | ||
+ | "<STYLE type=\"text/css\" media=\"screen\">.solo_stampa {display: none;}\n</style>\n" & | ||
+ | "<STYLE type=\"text/css\" media=\"print\">.no_stampa {display: none;}\n</style>\n" & | ||
+ | "</head>\n" & | ||
+ | "<BODY>\n" & | ||
+ | "<BUTTON class=\" no_stampa \" onclick=\" window.print()\">S T A M P A</button>\n" & | ||
+ | "<DIV class=\"solo_stampa\">Questo testo viene stampato, ma non visualizzato allo schermo</div>\n" & | ||
+ | "<DIV class=\"no_stampa\">Questo testo viene visualizzato sullo schermo, ma non viene stampato</div>\n" & | ||
+ | "<DIV>Questo testo viene sia visualizzato sullo schermo sia stampato</div>\n</font>" | ||
=Note= | =Note= | ||
− | [1] Si ricorda che la ''TextEdit'' è capace mediante il codice HTML di caricare e mostrare anche una immagine. In tal modo, questo oggetto consentirà di stampare sia testo che immagini. | + | [1] Vedere anche la seguente pagina: [[Stampare un Controllo grafico posto sul Form]] |
+ | |||
+ | [2] Si ricorda che la ''TextEdit'' è capace mediante il codice HTML di caricare e mostrare anche una immagine. In tal modo, questo oggetto consentirà di stampare sia testo che immagini. | ||
+ | |||
+ | [3] Nell'esempio si è fatto uso della ''TextEdit'', ma ovviamente si potrà utilizzare ogni altro oggetto di testo. |
Versione attuale delle 02:35, 15 set 2023
Per poter stampare il testo presente in Controlli grafici che supportano il testo, come ad esempio Textabel, Label, TextArea, etc, possiamo utilizzare la procedura con la Classe Printer, oppure utilizzare il codice HTML.
Uso della Classe Printer
L'uso della Classe Printer permette di stampare con le sole risorse di Gambas. [nota 1]
Potremo adottare il seguente codice:
Public Sub Form_Open() Label1.Font = Font["Bitstream Charter,Bold,16"] Label1.Text = "aaaaa bbbbb ccccc ddddd" TextLabel1.Font = Font["Ubuntu, Italic,12"] TextLabel1.Text = "aaaaa bbbbb ccccc ddddd" End Public Sub Button1_Click() With Printer1 .Configure .Orientation = 0 .Paper = 2 .Resolution = Desktop.Resolution ' Se si vuole creare un file PDF, si dovrà impostare la Proprietà ".OutputFile": ' .OutputFile = "/tmp/stampa.pdf" .Print End With End Public Sub Printer1_Draw() Dim ob As Object With Paint For Each ob In Me.Children ' E' possibile impostare eventualmente il Font, la dimensione e lo stile dei caratteri, anche conformemente ai parametri già impostati nei Controlli grafici, di cui si deve stampare il testo mostrato: If Object.Type(ob) = "Label" Then .Font = Font["Bitstream Charter,Bold,16"] Else .Font = Font["Ubuntu, Italic,12"] Endif ' Individua e imposta lo spazio ove far stampare i caratteri: .Text(ob.Text, ob.X, ob.Y, ob.W, ob.H) .Fill Next End With End
Questo algoritmo, ad ogni modo, consente di stampare anche il testo assegnato alle Proprietà ".Text" e ".RichText" di qualsiasi Oggetto che le possegga.
Uso del codice HTML
L'uso del codice HTML determinerà l'apertura automatica e contestuale del browser predefinito nel sistema, dove sarà visualizzato il contenuto da stampare, e della consueta finestra di dialogo per la stampa. Potremo adottare, ad esempio, il seguente codice:
Private preHtml As String Public Sub Form_Open() ' Questo è il codice HTML essenziale per stampare automaticamente: preHtml = "<HTML>\n<BODY onload = \"self.print()\">" End Public Sub Button1_Click() ' Al codice HTML essenziale per stampare aggiungiamo il testo da stampare: preHtml &= TextEdit1.RichText & "</body>\n</html>\n" ' [nota 2] [nota 3] ' Salva il nuovo codice, comprensivo del testo da stampare, in un file "HTML": File.Save("/tmp/prova.html", preHtml) ' Richiama e apre il file HTML con il metodo "Desktop.Open" (è necessario attivare il componente "gb.desktop"): Desktop.Open("/tmp/prova.html") End
Se non si vuole ottenere l'apertura automatica della finestra di dialogo per la stampa del foglio HTML, si potrà far comparire un tasto virtuale sul foglio medesimo, sul quale premere per far mostrare la finestra di dialogo della stampa. In tal caso, si dovrà sostituire la variabile globale preHtml del precedente codice con la seguente:
Private preHtml As String = "<HTML>\n" & "<META http-equiv=\"Content-type\" content=\"text/html;charset=utf-8\">\n" & "<STYLE type=\"text/css\" media=\"screen\">.solo_stampa {display: none;}\n</style>\n" & "<STYLE type=\"text/css\" media=\"print\">.no_stampa {display: none;}\n</style>\n" & "</head>\n" & "<BODY>\n" & "<BUTTON class=\" no_stampa \" onclick=\" window.print()\">S T A M P A</button>\n" & "<DIV class=\"solo_stampa\">Questo testo viene stampato, ma non visualizzato allo schermo</div>\n" & "<DIV class=\"no_stampa\">Questo testo viene visualizzato sullo schermo, ma non viene stampato</div>\n" & "<DIV>Questo testo viene sia visualizzato sullo schermo sia stampato</div>\n"
Note
[1] Vedere anche la seguente pagina: Stampare un Controllo grafico posto sul Form
[2] Si ricorda che la TextEdit è capace mediante il codice HTML di caricare e mostrare anche una immagine. In tal modo, questo oggetto consentirà di stampare sia testo che immagini.
[3] Nell'esempio si è fatto uso della TextEdit, ma ovviamente si potrà utilizzare ogni altro oggetto di testo.