Zur Verdeutlichung ...
Man KANN ein Druckerobjekt erstellen und für mehrere Ausdrucke verwenden:
Code: Alles auswählen
oXbP steht für ein XbpPrinter() Objekt
oPS steht für das zugeordnete PresentationSpaceObjekt
* 20 Dokumente drucken ...
oXbP und oPS erstellen und zuordnen ... (steht in Hilfe)
for x = 1 to 20
oXbP:StartDoc()
// mach was
oXbP:EndDoc() // kein :NewPage() vor EndDoc() ohne Text, sonst gibt es eine leere Seite !
next
* keine Ausdrucke mehr
oXbP und oPS destroyen ! (steht auch in Hilfe)
das geht auch, dauert aber länger !!!
Code: Alles auswählen
oXbP steht für ein XbpPrinter() Objekt
oPS steht für das zugeordnete PresentationSpaceObjekt
* 20 Dokumente drucken ...
for x = 1 to 20
oXbP und oPS erstellen und zuordnen ... (steht in Hilfe)
oXbP:StartDoc()
// mach was
oXbP:EndDoc() // kein :NewPage() vor EndDoc() ohne Text, sonst gibt es eine leere Seite !
oXbP und oPS destroyen ! (steht auch in Hilfe)
next
... keine Ausdrucke mehr
aber so gehen einem schnell die Resourcen (Druckerhandles) aus, insbesondere auf einem TerminalServer
Code: Alles auswählen
oXbP steht für ein XbpPrinter() Objekt
oPS steht für das zugeordnete PresentationSpaceObjekt
* 20 Dokumente drucken ...
for x = 1 to 20
oXbP und oPS erstellen und zuordnen ... (steht in Hilfe)
oXbP:StartDoc()
// mach was
oXbP:EndDoc() // kein :NewPage() vor EndDoc() ohne Text, sonst gibt es eine leere Seite !
next
... keine Ausdrucke mehr
und wer glaubt dass die 3. Art in einer Funktion nach dem ENDE dieser keine Probleme verursacht irrt.
Xbase++ räumt zwar SEINE Variablen (hier oXbp und oPS) auf, aber eben nicht die Betriebssystem handles, dafür ist destroy() nötig.