Hallo,
ich arbeite zur Zeit an einem Programm, um eine Rangliste zu verwalten.
Unter anderem habe ich vor, diese auszudrucken.
Dazu benutze ich folgende Prozedur:
Delphi-Quellcode:
procedure Drucken;
var
I: Integer;
X, Y: Integer;
Breite, Hoehe, Randlinks, Randoben: Integer;
begin
if PrintDialog1.Execute
then
with Printer
do
begin
BeginDoc;
SetMapMode(Canvas.Handle,MM_LOMETRIC);
// 1/10 mm
with Canvas
do
begin
with Font
do
begin
Name := '
Courier New';
Height := 50;
end;
Breite := GetDeviceCaps(
Handle,HORZSIZE) * 10;
Hoehe := GetDeviceCaps(
Handle,VERTSIZE) * 10;
Randlinks := 100;
Randoben := 200;
Y := -Randoben;
for I := 0
to ListBox1.Items.Count-1
do
begin
if -Y > (Hoehe - 2 * Randoben)
then
begin
NewPage;
// funktioniert nicht
Y := -Randoben;
end;
TextOut(X,Y,ListBox1.Items[I]);
Y := Y - TextHeight(ListBox1.Items[I]);
end;
end;
EndDoc;
end;
end;
Ich habe sie ein bisschen vereinfacht (ListBox1 anstatt Listview mit Subitems).
Die erste Seite wird besstens gedruckt, aber seit ich "MapMode" auf MM_LOMETRIC gesetzt habe,
werden alle weiteren Seiten leer ausgeworfen.
An was könnte das denn liegen?