Hier ohne "with" aber mit Deinen Änderungen
Delphi-Quellcode:
procedure PrintDlgSelLv(PDlg: TPrintDialog; const LV: TListView; const Title: String = 'by KodeZwerg');
Var
LineHeight,i,j,Y,X:Integer;
begin
if PDlg.Execute then
begin
Printer.Title := Title;
Printer.Copies := PDlg.Copies;
Printer.Orientation := poLandscape;
Printer.BeginDoc;
LineHeight:=Round(Printer.Canvas.TextHeight('H')*1.2);
Y:=0;
for i:=0 to LV.Items.Count-1 do
if LV.Items[i].Checked then
begin
If Y+LineHeight>Printer.PageHeight Then
begin
Printer.NewPage;
Y:=0;
end;
// Printer.Canvas.TextOut(0,Y,LV.Items[i].Caption);
X:=0;
Printer.Canvas.TextOut(X*Printer.PageWidth Div LV.Width,Y,LV.Items[i].Caption);
for j:=0 to LV.Items[i].SubItems.Count-1 do
begin
X:=X+LV.Columns[j].width;
Printer.Canvas.TextOut(X*Printer.PageWidth Div LV.Width,Y,LV.Items[i].SubItems[j]);
end;
Y:=Y+LineHeight;
end;
Printer.EndDoc;
end;
end;
Aufrufen so in etwa:
PrintDlgSelLv(PrintDialog1, ListView1, 'Mischungsliste');
Erklärung:
Bei "BeginDoc" fängt man an ein Formular fürs Drucken Vorzubereiten, bei "EndDoc" sagt man dem Drucker das man fertig ist.