Differenze tra le versioni di "Stampare il testo presente in oggetti di testo"

Da Gambas-it.org - Wikipedia.
Riga 3: Riga 3:
 
=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. Potremo adottare il seguente codice:
  '''Public''' Sub Button1_Click()
+
  Public Sub Form_Open()
 +
 +
  Label1.Font = Font["Bitstream Charter,Bold,16"]
 +
  Label1.Text = "aaaaa bbbbb ccccc ddddd"
 +
 +
End
 +
 +
Public Sub Button1_Click()
 
   
 
   
 
   With Printer1
 
   With Printer1
Riga 10: Riga 17:
 
     .Paper = 2
 
     .Paper = 2
 
     .Resolution = Desktop.Resolution
 
     .Resolution = Desktop.Resolution
 +
<FONT color=#006400>' ''Se vogliamo creare un file PDF, impostiamo la Proprietà ".OutputFile":''</font>
 +
<FONT color=gray>'  '''.OutputFile''' = "/tmp/stampa.pdf"</font>
 
     .Print
 
     .Print
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End  
 
   
 
   
  '''Public''' Sub Printer1_Draw()
+
  Public Sub Printer1_Draw()
 
   
 
   
 
   Dim ob As Object  
 
   Dim ob As Object  
Riga 21: Riga 30:
 
   With Paint  
 
   With Paint  
 
     For Each ob In FMain.Children  
 
     For Each ob In FMain.Children  
<FONT color=#006400>' ''Impostiamo lo spessore dei caratteri:''</font>
 
      .LineWidth = 0.01
 
 
  <FONT color=#006400>' ''Possiamo eventualmente impostare il Font, la dimensione e lo stile dei caratteri:''</font>
 
  <FONT color=#006400>' ''Possiamo eventualmente impostare il Font, la dimensione e lo stile dei caratteri:''</font>
       .Font = ob.Font
+
       .Font = Font["Bitstream Charter,Bold,16"]
 
  <FONT color=#006400>' ''Individuiamo ed impostiamo lo spazio ove far stampare i caratteri:''</font>
 
  <FONT color=#006400>' ''Individuiamo ed impostiamo lo spazio ove far stampare i caratteri:''</font>
 
       .Text(ob.Text, ob.X, ob.Y, ob.W, ob.H)
 
       .Text(ob.Text, ob.X, ob.Y, ob.W, ob.H)
Riga 31: Riga 38:
 
   End With
 
   End With
 
   
 
   
  '''End'''
+
  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 Proprietà ".Text" e ".RichText" di qualsiasi Oggetto che le possegga.
  
  
 
=Uso del codice HTML=
 
=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:
 
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
+
  Private preHtml As String
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  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>"
+
  preHtml = "<FONT color=#B22222><HTML>\n<BODY onload = \"self.print()\"></font>"
 
   
 
   
  '''End'''
+
  End  
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
   
 
   
 
  <FONT color=006400>' ''Al codice HTML essenziale per stampare aggiungiamo il testo da stampare:''</font>
 
  <FONT color=006400>' ''Al codice HTML essenziale per stampare aggiungiamo il testo da stampare:''</font>
    preHtml &= TextEdit1.RichText & "</body>\n</html>\n"  |[[#Note|1]]|  |[[#Note|2]]|
+
  preHtml &= TextEdit1.RichText & "</body>\n</html>\n"  |[[#Note|1]]|  |[[#Note|2]]|
 
        
 
        
 
  <FONT color=006400>' ''Salviamo il nuovo codice, comprensivo del testo da stampare, in un file "HTML":''</font>
 
  <FONT color=006400>' ''Salviamo il nuovo codice, comprensivo del testo da stampare, in un file "HTML":''</font>
    File.Save("/tmp/prova.html", preHtml)
+
  File.Save("/tmp/prova.html", preHtml)
 
        
 
        
 
  <FONT color=006400>' ''Richiamiamo ed apriamo il file HTML con il metodo "Desktop.Open" (è necessario attivare il componente "gb.desktop"):''</font>
 
  <FONT color=006400>' ''Richiamiamo ed apriamo il file HTML con il metodo "Desktop.Open" (è necessario attivare il componente "gb.desktop"):''</font>
    Desktop.Open("/tmp/prova.html")
+
  Desktop.Open("/tmp/prova.html")
 
              
 
              
  '''End'''
+
  End
  
Se non si vuole ottenenere 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:
+
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" &
+
  Private preHtml As String = "<FONT color=#B22222><HTML>\n" &
 
  "&lt;META http-equiv=\"Content-type\" content=\"text/html;charset=utf-8\">\n" &
 
  "&lt;META http-equiv=\"Content-type\" content=\"text/html;charset=utf-8\">\n" &
 
  "&lt;STYLE type=\"text/css\" media=\"screen\">.solo_stampa {display: none;}\n</style>\n" &
 
  "&lt;STYLE type=\"text/css\" media=\"screen\">.solo_stampa {display: none;}\n</style>\n" &

Versione delle 12:22, 13 giu 2023

Per poter stampare il testo presente in oggetti di 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. Potremo adottare il seguente codice:

Public Sub Form_Open()

 Label1.Font = Font["Bitstream Charter,Bold,16"]
 Label1.Text = "aaaaa bbbbb ccccc ddddd"

End

Public Sub Button1_Click()

  With Printer1
    .Configure
    .Orientation = 0
    .Paper = 2
    .Resolution = Desktop.Resolution
' Se vogliamo creare un file PDF, impostiamo 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 FMain.Children 
' Possiamo eventualmente impostare il Font, la dimensione e lo stile dei caratteri:
      .Font = Font["Bitstream Charter,Bold,16"]
' Individuiamo ed impostiamo 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"  |1|  |2|
      
' Salviamo il nuovo codice, comprensivo del testo da stampare, in un file "HTML":
 File.Save("/tmp/prova.html", preHtml)
      
' Richiamiamo ed apriamo 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] 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.

[2] Nell'esempio si è fatto uso della TextEdit, ma ovviamente si potrà utilizzare ogni altro oggetto di testo.