Autore Topic: [RISOLTO] ancora sulla stampa!  (Letto 301 volte)

Offline giango

  • Grande Gambero
  • ***
  • Post: 105
    • Mostra profilo
[RISOLTO] ancora sulla stampa!
« il: 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

Citazione
'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
« Ultima modifica: 27 Settembre 2014, 17:08:54 da giango »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.334
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: ancora sulla stampa!
« Risposta #1 il: 27 Settembre 2014, 16:57:07 »
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).
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline giango

  • Grande Gambero
  • ***
  • Post: 105
    • Mostra profilo
Re: ancora sulla stampa!
« Risposta #2 il: 27 Settembre 2014, 17:08:26 »
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.