Gambas-it
Gambas3 => Programmazione => Topic aperto da: giango - 27 Settembre 2014, 15:44:04
-
Sarò anche testone, ma a me piace capire come funzionano le cose.
Il codice che allego funziona bene e mi crea il documento richiesto, ma c'è una cosa che non comprendo: come fa a richiamare la routine "stampa_Draw()"
relativa alla Drawingarea inserita nel form, se non viene invocata direttamente dalla routine di stampa?
Grazie per la Vs. pazienza
'IN DICHIARAZIONI: Private miaStampante As Printer
'
Public Sub bt_1_Click()
lancio_stampa
End
Public Sub lancio_stampa()
miaStampante = New Printer As "Stampa"
With miaStampante
.OutputFile = avvio.cartella & "prova.pdf"
.Orientation = 0
.GrayScale = True
.Paper = 2
.Print
End With
End
Public Sub stampa_Draw()
With Paint
.Font.Size = 10
.DrawText("Questa è la testata del documento", 500, 500)
.DrawText("secondo testo ", 500, 1300, 400, 500)
.DrawText("terzo testo ", 500, 1600, 400, 500)
.Fill
.End
End With
End
-
La routine "stampa_Draw()" è più precisamente un evento del componente Printer, e non è necessariamente legato all'oggetto DrawingArea. Infatti, se tu usi quel tuo codice in un progetto privo di DrawingArea, il risultato di stampa non muta. Infatti gli elementi da stampare (nel tuo caso solo testo) li hai definiti nei metodi ".DrawText", e con la proprietà .Font.Size, della Classe Paint .
Il predetto evento è scatenato - a mio parere - dal metodo .Print della Classe Printer che tu hai usato all'interno della parola With, giustamente per effettuare la stampa (in questo caso su .pdf).
-
Sempre molto preciso ed accurato direi.
Non mi resta che eliminare la Drawingarea ed osservare con stupore quanto da te espresso.
E in effetti è proprio come dici: il tutto dipende dalla"paint".
Grazie per il chiarimento.