// 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;
|