AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text zum Drucker schicken

Ein Thema von venice2 · begonnen am 3. Aug 2020 · letzter Beitrag vom 4. Aug 2020
Antwort Antwort
venice2
(Gast)

n/a Beiträge
 
#1

Text zum Drucker schicken

  Alt 3. Aug 2020, 22:48
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.

Geändert von venice2 ( 3. Aug 2020 um 23:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.332 Beiträge
 
Delphi 12 Athens
 
#2

AW: Text zum Drucker schicken

  Alt 4. Aug 2020, 00:08
Delphi-Referenz durchsuchenPrinters

Printer.Canvas.DrawText



Printer.SetPrinter
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 4. Aug 2020 um 00:10 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#3

AW: Text zum Drucker schicken

  Alt 4. Aug 2020, 00:48
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.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.368 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Text zum Drucker schicken

  Alt 4. Aug 2020, 07:21
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.
Peter
  Mit Zitat antworten Zitat
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
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.368 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Text zum Drucker schicken

  Alt 4. Aug 2020, 07:45
Wenn es nicht automatisch läuft, kannst du einen PrinterDialog davor machen. Ansonsten solltest du es zumindest in einem Try-Except-Block kapseln.
Peter
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz