Druckerkontext
--------------
SET("PDC",<Wert> )
&PDC
HINWEIS: Zum Speichern des Ergebnisses von &PDC und zum Setzen sollte eine LONGINT-Variable (mit &) verwandt werden.
Über die Systemvariable &PDC läßt sich der Druckerkontext auslesen (ergibt natürlich nur nach STARTPRINT einen sinnvollen Wert).
Mit der Setfunktion, kann der Druckerkontext auf einen beliebigen Wert gesetzt werden. Ist auch nur nach STARTPRINT sinnvoll.
ACHTUNG: Wenn man mit einem solchen selbsterzeugten Druckerkontext arbeiten will, dann muß man nicht nur den Druckerkontext des gewählten Druckers ermitteln, sondern diesem Kontext auch eine virtuelle Druckseite zuweisen. Hierzu sind folgende API-Befehle zu verwenden:
~StartDoc(&PDC,DocInfo#);
~StartPage(&PDC);
~SetMapMode(&PDC, ... );
~SetWindowExtEx(&PDC, ... );
~SetViewPortExtEx(&PDC, ... );
Näheres in entsprechender Fachliteratur.
Der PROFAN-Befehl STARTPRINT macht zur Zeit nämlich beides: den Druckerkontext des aktuellen Windowsdruckers ermitten und die erste Seite zum Drucken vorbereiten. Die weiter unten in diesem Forum entwickelen Routinen ermitteln zwar den Druckerkontext eines beliebgen Druckers, initialisieren aber nicht die Druckseite. Deshalb kann allein durch das Setzen des Druckerkontextes die Sache nicht funktionieren.
Ich überlege, ob ich nicht eine STARTPRINT Variante einbaue, die den Druckerkontext nicht selbst setzt, sondern den Gesetzten verwendet und mit diesem die Seite initialisiert. Bitte etwas Geduld!
Roland
|