Il controllo della stampante con Visual Objects 2.00
Enio Donci 


Visual Objects presenta tre classi per il controllo diretto della stampante:
Printer, PrintingDevice e PrinterExposeEvent.
Inoltre, la classe PrinterErrorEvent riferisce gli eventuali errori o problemi di stampa.

La classe Printer :
La libreria GUI Classes contiene la classe Printer che consente di eseguire operazioni di stampa a basso livello.
Questa classe, che non è stata pensata per stampare dei Report, discende dalla classe Window e permette di inviare l'output a una stampante come se fosse l'area di lavoro di una finestra. Un oggetto della classe Printer contiene un intero processo di stampa.
Per eseguire questo processo innenzitutto si usa il metodo IsValid() per determinare se esiste un dispositivo di stampa valido, quindi si inizia il processo di stampa vero e proprio con il metodo Start().
Le definizioni della pagina sono riportate nel metodo PrinterExpose().
Ad esempio, il seguente codice stampa la frase "Ciao Mondo".

oPrinter := Printer()

IF oPrinter:IsValid()
  oPrinter:Start() ENDIF

METHOD PrinterExpose(oPe) CLASS Printer
  SELF:TextPrint("Ciao Mondo",Point{35,35})
RETURN FALSE

La classe PrintingDevice :
Questa classe visualizza la finestra di dialogo per l'impostazione della stampante di Windows

che consente di selezionare l'orientamento della pagina, l'alimentazione della carta, la risoluzione e così via.

La classe PrintExposeEvent :

La classe PrintExposeEvent consenete di determinare il numero e l'area della pagina da stampare.
Essa ha due proprietà: ExposedArea e PageNo. La proprietà ExposedArea contiene un oggetto BoundingBox che descrive l'area della pagina da stampare, mentre PageNo è un valore numerico che rappresenta il numero della pagina.

La classe PrintErrorEvent :

L'unico scopo di questa classe è quello di restituire qualsiasi errore verificatosi in un'operazione di stampa.
Questa classe non ha nessun metodo e ha una sola proprietà, ErrorType contenente una costante che descrive l'errore verificatosi.
Le costanti di questa proprietà sono elencate nella tabella descritta qui di seguito.
PRINTERERRORFATALDEVICEERROR Il dispositivo di stampa non è stato creato o inizializzato correttamente.
PRINTERERRORGENERALERROR Si è verificato un errore generico non identificabile (specifico del sistema).
PRINTERERRORNODISKSPACE Il Print Manager ha esurito lo spazio su disco necessario per completare l'operazione. Questo errore non è necessariamente fatale.
PRINTERERRORNOMEMSPACE La memoria non è sufficiente per completare l'operazione.
PRINTERERRORUSERABORT L'utente o l'applicazione ha interroto l'operazione.

Conclusioni :
In questo articolo habbiamo analizzato brevemente la classe Printer, la quale permette di controllare i processi di stampa.
Per renderci conto di come sia potente quasta classe, basta dare uno sguardo ad un prodotto di terze parti molto usato dagli sviluppatori VO e non solo.
Questo prodotto si chiama Report Pro della DataPro (www.dproinc.com ).
Questo prodotto è un generatore di Report molto semplice da usare e nello stesso tempo molto potente.
Esso è stato scritto in Visual Objects.