Delphi-PRAXiS
Seite 2 von 3     12 3   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Drucken (https://www.delphipraxis.net/134392-drucken.html)

Klaus01 21. Mai 2009 20:13

Re: Drucken
 
Zitat:

Zitat von Luckie
Warum setzt ihr den Mapmode nicht auf LOMETRIC? Dann habt ihr 10/Millimeter.

Guten Abend,

sollte es nicht Millimeter/10 heißen, also 0,1 Millimeter?

Grüße
Klaus

P.S. Wie war der erste Vatertag?

Luckie 21. Mai 2009 20:35

Re: Drucken
 
Äh, ja.Zu viel sauerstoff. Ich war heute den ganzen Nachmittag im Tierpark Sababurg unterwegs mit Anne und meiner Freundin.. ;)

Whatever 8. Jul 2009 13:34

Re: Drucken
 
Hallo,

kann mir zufällig jemand sagen, was "Mapmode" ist und was auf "Lometric" gesetzt werden muss.

Tierpark Sababurg? ganz bei mir in der Nähe :)

Grüße Whatever

DeddyH 8. Jul 2009 13:53

Re: Drucken
 
MSDN-Library durchsuchenSetMapMode, da ist das beschrieben ;)

Whatever 8. Jul 2009 14:03

Re: Drucken
 
Ah vielen Dank!
Also sind, wenn ich den Mapmode des Druckers auf Lometric stelle, alle Angaben in 0.1 Millimeter richtig?
Grüße Whatever

DeddyH 8. Jul 2009 19:11

Re: Drucken
 
Richtig. Was noch wichtig ist:
Zitat:

Positive x is to the right; positive y is up.
, d.h. die Y-Koordinaten werden anders behandelt, als man das normalerweise gewohnt ist.

alzaimar 8. Jul 2009 19:52

Re: Drucken
 
Seit mir nicht böse, aber wieso verwendet ihr keinen Reportgenerator? Zum programmieren nehmt ihr doch auch die Delphi-IDE und kein Notepad.EXE? :mrgreen:

Whatever 8. Jul 2009 22:00

Re: Drucken
 
Also alle Y-Werte *(-1).
Gut dankeschön für die Hilfe. :wink:
Alzaimar mit deinem Post kann ich ehrlich gesagt nichts anfangen... :-D

RaSoWa1 8. Jul 2009 22:09

Re: Drucken
 
Zitat:

m:= Printer.PageHeight/297 // Druckerauflösung Pixel/mm
liefert ggf. einen falschen Wert, da der nicht druckbare Bereich nicht berücksichtigt wird. Viele Drucker haben links, rechts, oben und unten einen nicht druckbarenn Bereich von ca. 2 bis 5 mm.
Besser ist deshalb, gerade weil es eine API ist:
Zitat:

GetDeviceCaps(Printer.Handle, LOGPIXELSX) / 2.54

Zitat:

getDeviceCaps(Printer.Handle,HORZSIZE); // (Bedruckbare Breite in mm)
getDeviceCaps(Printer.Handle,VERTSIZE); // (Bedruckbare Höhe in mm)
Gibt es auch eine Funktion die mir die Größe der nicht druckbaren Ränder liefert?

Gruß Klaus

samso 10. Jul 2009 14:04

Re: Drucken
 
Das muß aus diversen Parameter zurückgerechnet werden. Der linke und der obere Rand ergibt sich aus PHYSICALOFFSETX, PHYSICALOFFSETY. Der rechte und der untere Rand muß dann aus PHYSICALWIDTH, PHYSICALHEIGHT abzüglich HORZRES unter Berücksichtigung von LOGPIXELSX bzw. VERTRES unter Berücksichtigung von LOGPIXELSY berechnet werden.
Delphi-Quellcode:
function GetDefaultMinMargins: TRect;
var
  XResolution, YResolution: Extended;
  PhysicalPage: TPoint;
  PrintablePage: TPoint;
  Offset: TPoint;
begin
  XResolution := 1/GetDeviceCaps(Printer.Handle, LOGPIXELSX)*1000;
  YResolution := 1/GetDeviceCaps(Printer.Handle, LOGPIXELSY)*1000;
  PhysicalPage.X := GetDeviceCaps(Printer.Handle, PHYSICALWIDTH);
  PhysicalPage.Y := GetDeviceCaps(Printer.Handle, PHYSICALHEIGHT);
  PrintablePage.X := GetDeviceCaps(Printer.Handle, HORZRES);
  PrintablePage.Y := GetDeviceCaps(Printer.Handle, VERTRES);
  Offset.X := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
  Offset.Y := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
  Result.Left := trunc(Offset.X*XResolution+0.5);
  Result.Top := trunc(Offset.Y*YResolution+0.5);
  Result.Right := trunc((PhysicalPage.X-Offset.X-PrintablePage.X)*XResolution+0.5);
  Result.Bottom := trunc((PhysicalPage.Y-Offset.Y-PrintablePage.Y)*YResolution+0.5);
end;
Wenn ich mich richtig erinnere war das Ergebnis dann in 1/1000 inches :?:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr.
Seite 2 von 3     12 3   

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf