Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#5

AW: Text zum Drucker schicken

  Alt 4. Aug 2020, 07:35
Zitat:
Printer.SetPrinter
Muss ich das ? Es reicht doch wenn man den von Windows voreingestellten Drucker verwendet.
Ja, weil es vorkommen kann, dass Windows keinen voreingestellten Drucker hat.
Hatte ich erst kürzlich wieder, obwohl dort eigentlich ein Drucker eingestellt ist. Der hat aber nicht mehr mit Windows kommuniziert und Windows hatte dann keinen voreingestellten Drucker mehr.
Danke für die Info.
Nur leider kenne ich mich damit gar nicht aus.

Wo oder wie komme ich an den Drucker dran? Kann ja nicht irgend etwas nehmen.
Meine Funktion sieht so aus die geht mit dem PDF Drucker von MS, habe keinen eigenen.
Den habe ich als Default eingestellt.

Delphi-Quellcode:
procedure SendToPrinter(WinHandle: HWND);
var
  pt: Text;
  hCtrl: HWND;
  Count, SelItems, K: Integer;
  SelItem : array of Integer;
  sBuffer: string;
  buffer: string;
begin
  hCtrl := GetDlgItem(WinHandle, ID_LISTBOX);
  Count := SendMessage(hCtrl, LB_GETCOUNT, 0, 0);
  if (Count > 0) then
  begin
    SelItems := SendMessage(hCtrl, LB_GETSELCOUNT, 0, 0);
    if (SelItems > 0) then
    begin
      SetLength(SelItem, SelItems);
      SendMessage(hCtrl, LB_GETSELITEMS, SelItems, LPARAM(SelItem));
      for K := 0 to SelItems - 1 do
      begin
        sBuffer := GetTextListbox(hCtrl, SelItem[K]);
        Buffer := buffer + sBuffer + #13#10;
      end;
      // Drucker part
      AssignPrn(pt);
      Rewrite(pt);

      Printer.Canvas.Font.Name := 'Segoe UI';
      Printer.Canvas.Font.Size := 12;

      WriteLn(pt, Buffer);

      Close(pt);
      Buffer := '';
      SetLength(SelItem, 0);
    end else
    begin
      for K := 0 to Count - 1 do
      begin
        sBuffer := GetTextListbox(hCtrl, K);
        Buffer := buffer + sBuffer + #13#10;
      end;
      // Drucker part
      AssignPrn(pt);
      Rewrite(pt);

      Printer.Canvas.Font.Name := 'Segoe UI';
      Printer.Canvas.Font.Size := 12;

      WriteLn(pt, Buffer);

      Close(pt);
      Buffer := '';
    end;
  end;
end;
Ich selektiere einen Bereich in meiner ListBox.
Und schicke den selektierten Text direkt an den Drucker.

Wenn nichts selektiert ist dann wird der ganze Text verschickt.

Geändert von venice2 ( 4. Aug 2020 um 07:37 Uhr)
  Mit Zitat antworten Zitat