Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.689 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Nur ausgewählte Einträge einer Listview drucken

  Alt 3. Okt 2018, 18:09
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.
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 3. Okt 2018 um 18:35 Uhr) Grund: Code
  Mit Zitat antworten Zitat