Hej Anders
Herunder er en mere udførlig "guide". Koden sætter margins, skifter side og udskriver sidenr. m.v.
uses
..., Printers;
//Printers skal inkluderes i din Uses clause...
procedure TForm1.Button1Click(Sender: TObject);
var
PixelsX, PixelsY, LineSpacing: Integer;
LeftMargin, RightMargin, TopMargin, BottomMargin: Integer;
I, Line, LineHeight: Integer;
begin
with Printer do
begin
// Find pixels per inch (tommer)
PixelsX := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
PixelsY := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
// Lav margins
LeftMargin := Round(3.0 * PixelsX / 2.54); // 3cm
TopMargin := Round(2.0 * PixelsY / 2.54); // 2cm
BottomMargin := TopMargin;
// ekstra mellemrum mellem linier
LineSpacing := Round(0.1 * PixelsY / 2.54); // 1mm
// Sæt font Size + farve
Canvas.Font.Size := 10;
Canvas.Font.Color := clBlack;
// Find Liniehøjde i printer pixels.
LineHeight := Abs(Canvas.Font.Height) + LineSpacing;
// Start udskrivning
BeginDoc;
// Udskriv sidenr.
Canvas.TextOut(PageWidth - LeftMargin - Canvas.TextWidth(IntToStr(PageNumber)),
PageHeight - BottomMargin, IntToStr(PageNumber));
Line := TopMargin;
for I := 0 to ListBox1.Items.Count-1 do
begin
Canvas.TextOut(LeftMargin, Line, ListBox1.Items[I]);
Line := Line + LineHeight;
if (Line >= PageHeight - BottomMargin - LineHeight) then
begin // ny side.
NewPage;
Line := TopMargin;
// Udskriv sidenr.
Canvas.TextOut(PageWidth - LeftMargin - Canvas.TextWidth(IntToStr(PageNumber)),
PageHeight - BottomMargin, IntToStr(PageNumber));
end;
end;
// afslut udskrivning
EndDoc;
end;
end;
Jeg kan anbefale dig at læse i hjælpen under "Printer" samt "TPrinter".
mvh
hsv
[Redigeret d. 21/11-04 20:57:55 af HSV]