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
Seite 1 von 2  1 2      
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.071 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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

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.354 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.354 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
venice2
(Gast)

n/a Beiträge
 
#7

AW: Text zum Drucker schicken

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

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#8

AW: Text zum Drucker schicken

  Alt 4. Aug 2020, 07:55
Moin...

Ich empfehle ein Print System wie FastReport. Die kennen sich besser mit Drucken aus als wir. 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". Deshalb denke ich, das die Auseinandersetzung mit FastReport o.ä. besser ist. Die Zeit des Lernens ist da besser aufgehoben...
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#9

AW: Text zum Drucker schicken

  Alt 4. Aug 2020, 07:58
Moin...

Ich empfehle ein Print System wie FastReport. Die kennen sich besser mit Drucken aus als wir. 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". Deshalb denke ich, das die Auseinandersetzung mit FastReport o.ä. besser ist. Die Zeit des Lernens ist da besser aufgehoben...
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.

Geändert von venice2 ( 4. Aug 2020 um 09:58 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.445 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Text zum Drucker schicken

  Alt 4. Aug 2020, 13:29
Dann würde ich nur ClipBoard anbieten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:41 Uhr.
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