Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Drucken einer .txt Datei (https://www.delphipraxis.net/15270-drucken-einer-txt-datei.html)

Kiaro 25. Jan 2004 15:30


Drucken einer .txt Datei
 
Hi ihr!

Ich verwende in meinem momentanen Projekt einige txt Dateien und würde dieser gerne drucken können.
Wie kann ich in Delphi sagen, dass der Inhalt der Datei 'Dateiname.txt' gedruckt werden soll?
Muss ich einen print dialog verwenden? Würde ich ohnehin gerne, nur rein aus Interesse, gibt es auch andere Möglichkeiten?

mfg Kiaro

fkerber 25. Jan 2004 15:43

Re: Drucken einer .txt Datei
 
Hi!

Ob man Dateien direkt drucken kann, weiß ich nicht.
Auf jeden Fall kann man sie in eine Memo oder ein Richedit laden und von dort dann drucken.
Dazu braucht man eigentlich keinen PrintDialog.
Siehe dazu auch mal das Beispiel zum Richedit, das bei Delphi dabei ist.

Ciao fkerber

Kiaro 25. Jan 2004 16:03

Re: Drucken einer .txt Datei
 
Ich hab mir das mit den beiden Prozeduren

assignprn und rewrite mal angeschaut, aber aus der Delphi Hilfe werd ich nicth schlau...

könnte mir einer vielleicht mit einem kleinen Stückchen Quellcode helfen, wie das geht?

mfg Kiaro

Alexander 25. Jan 2004 16:04

Re: Drucken einer .txt Datei
 
Soweit ich weiß gibt es bei der VCL die Unit Printers, mit der man direkt auf den Canvas des Druckers mit TExtOut Text ausgeben kann.
Ein Beispiel (nicht getestet):
Delphi-Quellcode:
 with Printer do
  begin
    BeginDoc;
    Canvas.TextOut(0, 0, 'test');
    EndDoc;
  end;
.
Jetzt musst du nur noch die Textdatei auslesen und dann den String durch 'test' ersetzen...

Edit: Über ein Memo bzw. Richedit würde ich das nicht machen (Resourcenverschwendung...)

Synonym 25. Jan 2004 16:14

Re: Drucken einer .txt Datei
 
Zitat:

Jetzt musst du nur noch die Textdatei auslesen und dann den String durch 'test' ersetzen...
Wohl eher 'test' durch String ersetzen oder?

Synonym

Kiaro 25. Jan 2004 16:22

Re: Drucken einer .txt Datei
 
Ich hab das was Alexander gesagt hat mal probiert, das Problem ist nur, meien Textdateien bestehen aus mehreren Zeilen, die auch so formatiert bleiben sollten... und wenn ich die in eine TStringlist einlese, dann kann uch darüber ja immer nur eine der Zeilen drucken...

Alexander 25. Jan 2004 16:32

Re: Drucken einer .txt Datei
 
Wenn du das über eine StringListe machen willst, dann gibt es dort doch die Eigenschaft TEXT.

Kiaro 25. Jan 2004 22:28

Re: Drucken einer .txt Datei
 
Das ist ja alles schon mal generell ganz praktisch sowas zu wissen, nur bringts mir nicht viel, weil ich genau die Formatierung der Textdatei brauche... Vielleicht ist der Umweg über ein Memo doch besser, aber ich komm nich dahinter, wies geht

Stanlay Hanks 25. Jan 2004 22:31

Re: Drucken einer .txt Datei
 
Hi. Nur mal so am Rande: Welche Formatierung? Ist deine Datei jetzt eine Plain Text Textdatei oder eine rtf Datei oder so was? Ich meine, wenn es eine PlainText Datei ist, ist doch die Formatierung überall gleich, oder ? :gruebel:

Man liest sich, Stanlay :hi:

Kiaro 25. Jan 2004 23:08

Re: Drucken einer .txt Datei
 
Meine Datei ist eine .txt Datei... laut Word im "Nur Text Format"

Formatiert ist sie folgendermaßen:

Wort#9Wort
Wort#9Wort
usw...

Das ganze ist eine Vokabelliste, bzw. sind mehrere Listen in verschiedenen Dateien.

Wenn ich das jetzt drucken will, dann soll das natürlich nicht so rauskommen, das ich jedes wort hintereinander habe, bis die Zeile zu Ende ist, wie er es bei

with Printer do
* begin
* * BeginDoc;
* * Canvas.TextOut(0, 0, ensprechende Datei);
* * EndDoc;
* end;

abläuft sondern er soll es mir schön so ausdrucken, wie es Word oder der Editor auch anzeigen würden...
Wenn ich das ganze in eine Schleige verpacke und die einzelnen Strings jeweils drucken lasse landet auf jedem Blatt eine Zeile, ist auch nicht Sinn der Sache...

vielen Dank für die Mühe!

mfg Kiaro

Nightshade 26. Jan 2004 01:23

Re: Drucken einer .txt Datei
 
Delphi-Quellcode:
var tmp : TStringlist;

begin
  try
    tmp := TStringList.Create;
    tmp.LoadFromFile('Entsprechende Datei');
    with Printer do begin
      BeginDoc;
      Canvas.TextOut(0, 0,tmp.text);
      EndDoc;
    end;
  finally
    FreeAndNil(tmp);
  end;
end;

Alexander 26. Jan 2004 09:25

Re: Drucken einer .txt Datei
 
Hi,
Aber das Property TEXT sollte eigentlich die Formatierung, in diesem Fall die Umbrüche (#13#10) eigentlich enthalten....

Luckie 26. Jan 2004 09:27

Re: Drucken einer .txt Datei
 
Probier mal Shellexecute mit dem Verb 'print'.

Kiaro 26. Jan 2004 10:31

Re: Drucken einer .txt Datei
 
Irgendwie funktioniert das alles nicht.
bei dem canvas.textout da wir die Formatierung eben nicht erhalten, egal wie ichs probiert hab!

was ist das mit dem shellexecute? sagt mit so jetzt nix... Tut mir leid, dass ich soviel Stress mache, aber ich komm einfach nicht dahinter.

Wärs nicht vielleicht doch sinnvoller einen printdialog zu verwenden?

mfg Kiaro

Alexander 26. Jan 2004 10:58

Re: Drucken einer .txt Datei
 
Moin Kiaro,
Also das TEXT-Property der TStringList gibt den Text schon mit Zeilenumrüchen aus, doch scheinbar erkennt das TextOut nicht.
Ich habe das jetzt so versucht und es klappt:
Delphi-Quellcode:
  sl := TStringList.Create;
  sl.Add('sss');
  sl.Add('test');
  with Printer do
    begin
      BeginDoc;
      // Hier Font-Einstellungen vornehmen
      Canvas.Font.Name := 'Verdana';
      // Höhe des Textes berechnen...
      h := Canvas.TextHeight('tt');
      for i:=0 to sl.Count -1 do
       Canvas.TextOut (0, h*i, sl[i]);
      EndDoc;
    end;
Edit: Der Print-Dialog ist wirklich nur der Dialog selber, ums drucken musst du dich selber kümmern. ;-)

Kiaro 26. Jan 2004 12:17

Re: Drucken einer .txt Datei
 
Vielen Dank!

Damit hats jetzt endlich funktioniert :thuimb:

Kiaro

Alexander 26. Jan 2004 12:58

Re: Drucken einer .txt Datei
 
Gern geschehen ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 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