procedure TGesamtAbrechnungForm.Drucken;
var x, y: integer;
randlinks, randoben, breite, hoehe : integer;
Knoten,Knotenkind : TTreeNode;
Begin
Printer.BeginDoc;
SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC);
//Umstellen auf 1/10 mm
//Schrift-Einstellungen:
Printer.Canvas.Font.
Name := '
Courier New';
Printer.Canvas.Brush.Color := clWhite;
Printer.Canvas.Font.Style := [fsbold];
Printer.Canvas.Font.Height := 50;
//5 mm
//Blattgröße in 1/10 mm ermitteln:
breite := GetDeviceCaps(Printer.Canvas.Handle, HORZSIZE) * 10;
hoehe := GetDeviceCaps(Printer.Canvas.Handle, VERTSIZE) * 10;
randlinks := 150;
//1,5 cm
randoben := 250;
//2,5 cm
x := randlinks;
y := randoben * -1;
//Schreiben der ersten Überschrift
Printer.Canvas.Font.Style := [fsbold,fsUnderline];
Printer.Canvas.Font.Height := 60;
Printer.Canvas.TextOut(x,y,'
Gesamtabrechnung vom ' + DateToStr(Now));
dec(y,100);
//Schreiben des ersten TV-Elements
Printer.Canvas.Font.Style := [fsbold];
Printer.Canvas.Font.Height := 50;
Knoten := AbrechnungTV.Items.GetFirstNode;
PrintLine(randlinks,y,Knoten.Text,true);
If Knoten.getFirstChild <>
NIL Then
Begin
dec(y,60);
Knotenkind := Knoten.getFirstChild;
PrintLine(randlinks + 70,y,Knotenkind.Text,false);
While Knotenkind <> Knoten.GetLastChild
Do
Begin
dec(y,60);
If (-y > (hoehe - (2* randoben)))
Then
Begin
y := randoben * -1;
Printer.NewPage;
end;
Knotenkind := Knotenkind.GetNextSibling;
PrintLine(randlinks + 70,y,Knotenkind.Text,false);
End;
End;
//Schreiben der restlichen Elemente
While Knoten.GetNextSibling <>
NIL Do
Begin
dec(y,80);
If (-y > (hoehe - (2* randoben)))
Then
Begin
y := randoben * -1;
Printer.NewPage;
end;
Knoten := Knoten.getNextSibling;
PrintLine(randlinks,y,Knoten.Text,true);
If Knoten.getFirstChild <>
NIL Then
Begin
dec(y,60);
If (-y > (hoehe - (2* randoben)))
Then
Begin
y := randoben * -1;
Printer.NewPage;
end;
Knotenkind := Knoten.GetFirstChild;
PrintLine(randlinks + 70,y,Knotenkind.Text,false);
While Knotenkind <> Knoten.GetLastChild
Do
Begin
dec(y,60);
If (-y > (hoehe - (2* randoben)))
Then
Begin
y := randoben * -1;
Printer.NewPage;
end;
Knotenkind := Knotenkind.getNextSibling;
PrintLine(randlinks + 70,y,Knotenkind.Text,false);
End;
End;
End;
Printer.EndDoc;
End;