Autor Beitrag
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 26.02.19 06:39 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 26.02.19 11:42 
600 DPI sollte einfach die Auflösung eines bestimmten Druckers sein. Die solltest du über GetDeviceCaps bekommen können, möglicherweise rückt die VCL das auch irgendwo direkt raus.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 26.02.19 13:46 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Holgerx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62
Erhaltene Danke: 27

Win95 - Win11 / MSServer2000 - MSServer2019
Delphi 6pro / XE4
BeitragVerfasst: Di 26.02.19 15:52 
Hmm..

Wenn Du einfach nur in mm ausdrucken möchtest (per Printer.BeginDoc/EndDoc):


www.delphipraxis.net...asseinheiten-cm.html

www.swissdelphicente.../showcode.php?id=584

;)
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 26.02.19 17:52 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 28.02.19 04:28 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Holgerx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62
Erhaltene Danke: 27

Win95 - Win11 / MSServer2000 - MSServer2019
Delphi 6pro / XE4
BeitragVerfasst: Do 28.02.19 12:01 
Hmm..

Habe mal deinen Source nach dem Muster von den Schweitzern umgestellt:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
var
  r: TRect;
  s: WideString;
begin
  // # Einstellungen
  Printer.PrinterIndex := Printer.Printers.IndexOf('Microsoft XPS Document Writer');
  //Printer.PrinterIndex := 1;
  Printer.Canvas.Font.Name := 'MS Mincho';
  Printer.Canvas.Font.Size := 12;
  Printer.Canvas.Brush.Style := bsClear;

  // # Druckvorgang
  Printer.BeginDoc;
  SetMapMode(Printer.Handle, MM_LOMETRIC);  // <-- Muss anscheinend HINTER BeginDoc
  // Obere Zeile
  Printer.Canvas.Pen.Color := clBlue;
  Printer.Canvas.MoveTo(250, -250);  // alle Y-Werte Negativ, Positive Werte wandern nach links raus...
  Printer.Canvas.LineTo(1850, -250);
  // Mittlere Zeile
  Printer.Canvas.Pen.Color := clSilver;
  Printer.Canvas.MoveTo(250, -300);
  Printer.Canvas.LineTo(1850, -300);
  // Untere Zeile
  Printer.Canvas.Pen.Color := clBlue;
  Printer.Canvas.MoveTo(250, -350);
  Printer.Canvas.LineTo(1850, -350);
  // Text
  Printer.Canvas.Font.Color := clRed;
  s := #$3042;
  r := Rect(250, -250400, -400);
  DrawTextW(Printer.Canvas.Handle, PWideChar(s), Length(s), r, 0);
  Printer.EndDoc;


Und siehe da, es scheint zu funktionieren...
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 28.02.19 16:27 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Holgerx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62
Erhaltene Danke: 27

Win95 - Win11 / MSServer2000 - MSServer2019
Delphi 6pro / XE4
BeitragVerfasst: Do 28.02.19 20:39 
Hmm..

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
In der Hilfe heißt es, positive Y-Werte wandern nach oben ("positive y is up"). Das führt etwas zur Verwirrung.


Und da ist denke ich das Problem:

Von Oben nach oben gehend ist raus aus dem Papier ;)

Eine Seite fängt immer oben links mit 0,0 an, wenn ich nun nach oben gehe, geht es aus der Seite heraus und es wird nichts auf das Blatt gedruckt.
Ist wirklich verwirrend, da es bei Pixel wohl von oben nach untern mit positiven Wert geht..

Wobei ja 'Y' eher von Rechts nach links lauten müsste..
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 28.02.19 21:08 
- Nachträglich durch die Entwickler-Ecke gelöscht -