// Seltsamerweise bringen die Befehle getdevicecaps(printer.handle,horzsize)
// bzw.
getdevicecaps(printer.handle,vertsize) auf manchen Rechnern richtige
// und auf manchen falsche Ergebnisse. Der nachfolgende Code ist zwar etwas
// umständlicher, liefert aber korrekte Werte.

// Getestet mit D4 unter Win98

uses printers;

var
waagerecht,senkrecht,linkerRand,obererRand,
    rechterRand,untererRand
:double;

procedure bereich;
var
h:THandle;
wpix,spix:integer;
begin
h:=Printer.handle;
wpix:=getdevicecaps(h,logpixelsx);
spix:=getdevicecaps(h,logpixelsy);
waagerecht:=(printer.pagewidth/wpix)*2.54;
senkrecht:=(printer.pageheight/spix)*2.54;
linkerRand:=(getdevicecaps(h,physicaloffsetx)/wpix)*2.54;
obererRand:=(getdevicecaps(h,physicaloffsety)/spix)*2.54;
rechterRand:=(getdevicecaps(h,physicalwidth)/wpix)*2.54-waagerecht-linkerRand;
untererRand:=(getdevicecaps(h,physicalheight)/spix)*2.54-senkrecht-obererRand;

// bei Bedarf anzeigen:
{ showmessage('bedruckbarer Bereich:'+#13#10#10+'waagerecht: '+
formatfloat('0.00',waagerecht)+' cm'+#13#10+
'senkrecht: '+formatfloat('0.00',senkrecht)+' cm'+#13#10#10#10+
'unbedruckbar:'+#13#10#10+
'links: '+formatfloat('0.00',linkerRand)+' cm'+#13#10+
'oben: '+formatfloat('0.00',obererRand)+' cm'+#13#10+
'rechts: '+formatfloat('0.00',rechterRand)+' cm'+#13#10+
'unten: '+formatfloat('0.00',untererRand)+' cm'); }

end;


 

Zugriffe seit 6.9.2001 auf Delphi-Ecke