Um mir die Arbeit beim Drucken etwas zu erleichtern, habe ich den MapMode auf MM_LOMETRIC gestellt. Damit hat eine logische Einheit 0,1 mm ubnd der Ursprung liegt laut
PSDK unten links.
Meine Druckroutine sieht nun so aus:
Delphi-Quellcode:
SetMapMode(hDC, MM_LOMETRIC); // E = 0,1 mm
rec.Top := (FVerSize - TOPBORDER) * SCALE;
rec.Left := LEFTBORDER * SCALE;
rec.Bottom := ((FVerSize - TOPBORDER) * SCALE) - (LineHeight div SCALE);
rec.right := (FHorzSize - RIGHTBORDER) * SCALE;
DrawText(hDC, PChar(s), length(s), rec, DT_CENTER);
FVerSize und FHorzSize ermittele ich mit
GetDevicecaps und liegen in Millimetern vor.
LineHeight hat den Wert 47.
Delphi-Quellcode:
SetMapMode(Canvas.Handle, MM_LOMETRIC);
GetTextMetrics(Canvas.Handle, tm);
LineHeight := (tm.tmHeight + tm.tmExternalLeading);
FHorzSize := GetDeviceCaps(Canvas.Handle, HORZSIZE);
FVerSize := GetDeviceCaps(Canvas.Handle, VERTSIZE);
Die Werte der Konstanten sind in Millimetern angegeben. TOPBORDER hat den Wert 20 zum Beispiel. SCALE hat den Wert 10 damit ich wieder auf 0,1 mm komme. Für ein Din-A4 Blatt sind die Werte für rec jetzt:
rec.Top = 2660
rec.Left = 250
rec.Bottom = 2656
rec.Right = 1830
Aber er druckt mir nichts aus. Ich muss irgendwo noch einen Denkfehler haben. Ich finde ihn nur nicht.

Was mache ich also falsch?