Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Text zum Drucker schicken (https://www.delphipraxis.net/205123-text-zum-drucker-schicken.html)

venice2 3. Aug 2020 21:48


Text zum Drucker schicken
 
Habe das hier gefunden
Delphi-Quellcode:
uses
  Printers;

procedure PrintTest;
var
  pt: System.Text;

begin
  AssignPrn(pt);
  Rewrite(pt);

  Printer.Canvas.Font.Name := 'Arial';
  Printer.Canvas.Font.Size := 12;

  WriteLn(pt, 'UnicodeText');
     
  System.Close(pt);
end;
reicht das aus? Sollte schon Unicode fähig sein.

EDIT:
Scheint so.
Zumindest funktioniert es mit Microsoft Print to PDF.

Hat sich erledigt.

himitsu 3. Aug 2020 23:08

AW: Text zum Drucker schicken
 
Delphi-Referenz durchsuchenPrinters

Printer.Canvas.DrawText



Printer.SetPrinter

venice2 3. Aug 2020 23:48

AW: Text zum Drucker schicken
 
Zitat:

Zitat von himitsu (Beitrag 1471078)
Delphi-Referenz durchsuchenPrinters

Printer.Canvas.DrawText

Ich möchte ja keinen Text zeichnen sondern diesen nur an den Drucker schicken.
Das Schnipsel oben funktioniert soweit.

Oder wolltest du mir sagen das wäre falsch?

Zitat:

Printer.SetPrinter
Muss ich das ? Es reicht doch wenn man den von Windows voreingestellten Drucker verwendet.

Jasocul 4. Aug 2020 06:21

AW: Text zum Drucker schicken
 
Zitat:

Zitat von venice2 (Beitrag 1471079)
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.

venice2 4. Aug 2020 06:35

AW: Text zum Drucker schicken
 
Zitat:

Zitat von Jasocul (Beitrag 1471083)
Zitat:

Zitat von venice2 (Beitrag 1471079)
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.

Jasocul 4. Aug 2020 06:45

AW: Text zum Drucker schicken
 
Wenn es nicht automatisch läuft, kannst du einen PrinterDialog davor machen. Ansonsten solltest du es zumindest in einem Try-Except-Block kapseln.

venice2 4. Aug 2020 06:54

AW: Text zum Drucker schicken
 
Zitat:

Zitat von Jasocul (Beitrag 1471085)
Wenn es nicht automatisch läuft, kannst du einen PrinterDialog davor machen. Ansonsten solltest du es zumindest in einem Try-Except-Block kapseln.

Muss mich nachher mal darin einlesen oder nach ein paar Beispielen suchen.
Kenn mich damit nicht so richtig aus.

Man kann nicht alles wissen :oops:

haentschman 4. Aug 2020 06:55

AW: Text zum Drucker schicken
 
Moin...:P

Ich empfehle ein Print System wie FastReport. Die kennen sich besser mit Drucken aus als wir. :zwinker: Der manuelle Druck ist mit Sicherheit für das Vorhaben aussreichend...aber ohne visuelle Positierung der Texte. Das kommt mit Sicherheit gleich danach...der Wunsch nach "Schönheit". :zwinker: Deshalb denke ich, das die Auseinandersetzung mit FastReport o.ä. besser ist. Die Zeit des Lernens ist da besser aufgehoben...:zwinker:

venice2 4. Aug 2020 06:58

AW: Text zum Drucker schicken
 
Zitat:

Zitat von haentschman (Beitrag 1471087)
Moin...:P

Ich empfehle ein Print System wie FastReport. Die kennen sich besser mit Drucken aus als wir. :zwinker: Der manuelle Druck ist mit Sicherheit für das Vorhaben aussreichend...aber ohne visuelle Positierung der Texte. Das kommt mit Sicherheit gleich danach...der Wunsch nach "Schönheit". :zwinker: Deshalb denke ich, das die Auseinandersetzung mit FastReport o.ä. besser ist. Die Zeit des Lernens ist da besser aufgehoben...:zwinker:

Moin.
Das ist ein Runtime Tracer da ist nix mit Schönheit der Text muss nur rüber gebracht werden.
Im Grunde reicht ein copy\paste ins ClipBoard was ich ja zusätzlich noch mache.
Aber dafür jetzt extra Software zu bemühen ? Weis nicht ob das für ein Freeware Projekt das wahre ist.

Man muss das im Verhältnis immer etwas abwägen. ;)

freimatz 4. Aug 2020 12:29

AW: Text zum Drucker schicken
 
Dann würde ich nur ClipBoard anbieten ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz