printer.PaperSize.SupportedPapers

Verweis: WorkRect-PhysicalRect
Uses: Printers
Eingabe: Nichts
Ausgabe: Unterstützte Formate(StringList)
Funktion: Gibt eine Liste von unterstützten Papierformaten des aktuellen Druckers Als eine Liste von Strings zurück.

Bereiten Sie eine neue IDE Anwendung wie in dieser Anleitung printer4lazarus-installation gezeigt, vor. Zusätzlich benötigen Sie noch Folgende Komponenten:
TButton
TListBox

Die Methode Printer.PaperSize.PaperName zeigt die unterstützten Papierformate der angewählten Drucker an. Dieses Beispiel widmet sich einem Drucker. Dieser Drucker ist in dem Beispiel der Drucker “Free PDF”. Wenn Sie diesen nicht benutzen wollen, oder nicht installiert haben, dann kommentieren Sie die Zeile aus. In diesem Fall werden dann die Papierformate des Standard-Druckers angezeigt. In dem Beispiel werden alle zur Verfügung stehen den Papierformate angezeigt, die von dem Drucker unterstützt werden. Diese Formate werden über den installierten Druckertreiber bereitgestellt.

Beispiel 1

function RectToStr(sR: TRect; Absolut: boolean = False): string;
begin
  if Absolut then
    Result := Format('X1= %d, Y1= %d, X2= %d, Y2= %d',
      [sR.Left, sR.Top, sR.Left + sR.Width, sR.Top + sR.Height])
  else
    Result := Format('X= %d, Y= %d, L= %d, H= %d',
      [sR.Left, sR.Top, sR.Width, sR.Height]);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Papierpunkte, Druckpunkte: TRect;
begin
  printer.Orientation := poPortrait;
  Papierpunkte := printer.PaperSize.PaperRect.PhysicalRect;
  Druckpunkte := printer.PaperSize.PaperRect.WorkRect;
  ShowMessage('Gewählter Drucker: ' + printer.PaperSize.PaperName +
    #13#10 + 'Arbeitsbereich Größe: ' + RectToStr(Druckpunkte) +
    #13#10 + 'Physikalische Größe:   ' + RectToStr(Papierpunkte) +
    #13#10 + 'Auflösung Bildpunkte pro inch (25,4mm): ' +
    IntToStr(printer.XDPI) + ' DPI');
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  // v Bei Bedarf auskommentieren v
  printer.SetPrinter('FreePDF');
  listbox1.Items := printer.PaperSize.SupportedPapers;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  if listbox1.SelCount = 1 then
    Printer.PaperSize.PaperName := Listbox1.GetSelectedText;
end;

Die Funktion “RectToStr” wird hier näher erklärt. Als Erstes wird beim Ereignis “Form1.Activate” die unterstützten Papier-Formate des Druckers “Free PDF” geladen. Im nachfolgendem Animierten – Gif sehen Sie die Bereitstellung des Ereignisses.

Lazarus Ereignis OnActivate Hinzufügen
Ereignis OnActivate Hinzufügen

Zusätzlich benötigen wir ein Zweites Ereignis außer Button1.Click , welches wir folgendermaßen erzeugen.

Lazarus  Listbox1.Onclick Ereignis hinzufügen
Listbox1.Onclick Ereignis hinzufügen.

In diesem Ereignis werden wir mit GetSelectedText arbeiten.

    Printer.PaperSize.PaperName := Listbox1.GetSelectedText;

Der Angewählte Text aus der Listbox in die Variable der Methode “Printer.PaperSize.PaperName” übertragen. Diese Variable wird bei dem Ereignis Button1.Onclick ausgewertet und als folgende Information angezeigt.

Das DinA4-Format, Lazarus
Das DinA4-Format bei dem Drucker Free PDF.

Die Informationen Zeigen zum einen die Arbeitsbereiche des Druckers. Diese sind bei dem virtuellen Drucker fast identisch.(wahrscheinlich Rundungsfehler). Die Arbeitsbereiche (wurden Hier erklärt) und die Auflösung des Drucks in DPI (wurde Hier erklärt) stehen mit den möglichen Bildpunkten des zu Druckenden Blattes in Verbindung. Sie können dies über das Verändern der Druckerauflösung über Ihren Druckertreiber auprobieren. Durch das Verändern der Auflösung und der unterschiedlichen Blattformate ändert sich auch die Anzahl der Druckpunkte.