Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Drucken eines Textes von einer TMemo (https://www.delphipraxis.net/4556-drucken-eines-textes-von-einer-tmemo.html)

ssach 4. Mai 2003 14:00


Drucken eines Textes von einer TMemo
 
hy,

kann jemand mir sagen wie ich es anstellen den Text einer TMemo zu drucken?
laeuft das uebr einen PrintDialog?
danke

cu

Basic-Master 4. Mai 2003 14:14

nene der printdialog ist nur da um die beliebigen eigenschaften zum drucken einzustellen, drucken tut man mit dem printer-objekt:
Zitat:

Zitat von Die Delphi Hilfe
In diesem Beispiel wird ein Formular mit einer Schaltfläche und einer Memokomponente verwendet. Wenn der Benutzer auf die Schaltfläche klickt, wird der Inhalt der Memokomponente mit einem 200 Pixel großen Rahmen um die Seite gedruckt. Bevor Sie dieses Beispiel ausführen können, müssen Sie die Unit Printers in die uses
-Klausel aufnehmen.

procedure TForm1.Button1Click(Sender: TObject);

begin
with Printer do
begin
BeginDoc;
Canvas.TextRect(Rect(200,200,PageWidth-200,PageHeight-200),
200, 200, Memo1.Lines.Text);
EndDoc;
end;

end;

MfG

Daniel B 4. Mai 2003 15:52

Hallo,

und ab nach VCL-Komponenten.

Grüsse, Daniel :hi:

ssach 4. Mai 2003 18:51

Danke schonmal,

leider funktioniert es noch nicht richtig! hab den Source Code kopiert, jedoch druckt er immer nur die 1. Zeile des Dokumentes?!

woran kan das liegen?

aja daniel, was meinst du gena mit ab nach vcl komponenten?

danke

cu

Daniel B 4. Mai 2003 18:53

Hallo,
Zitat:

Zitat von ssach
aja daniel, was meinst du gena mit ab nach vcl komponenten?

Das ich den Thread in die Sparte VCL-Komponenten verschoben habe. Weil der in der falschen Sparte war, sonst nichts. ;)

Grüsse, Daniel :hi:

ssach 4. Mai 2003 19:29

achso, ok, hatte wohl nicht aufgepasst!

danke, cu

p.s.; wewiss jemand warum nur bei der foherigen procedure die erste zeile gedruckt wird?

APP 4. Mai 2003 19:43

Hallo,

ich würde meinen, dass alle Zeilen des Memos in eine Zeile gedruckt werden da die Zeilenumbrüche ignoriert werden.

Nach kurzer suche habe ich folgendes gefunden Printing the Contents of a TMemo Field:

Delphi-Quellcode:
//This Procedure will print the contents of a Memo field with a left margin and page numbers in the top right corner.
procedure PrintStrings(Strings : TStrings);
var
    I, Line, lm, r : integer;
    pn : string;
begin
    Line := 0;
    Printer.Canvas.Font := Form1.Memo1.Font;
    Printer.Begindoc;
    lm := Printer.PageWidth div 12;
    pn := 'Page ' + IntToStr(Printer.PageNumber);
    r := Printer.PageWidth - Printer.Canvas.TextWidth(pn);
    Printer.Canvas.TextOut(r, Line, pn);
    Line := Line + 3 * Abs(Printer.Canvas.Font.Height);
    for I := 0 to Strings.Count - 1 do
    begin
       Printer.Canvas.TextOut(lm, Line, Strings[I]);
       Line := Line + Abs(Printer.Canvas.Font.Height);
       if (Line >= Printer.PageHeight) then
       begin
          Printer.NewPage;
          Line := 0;
          pn := 'Page ' + IntToStr(Printer.PageNumber);
          r := Printer.PageWidth - Printer.Canvas.TextWidth(pn);
          Printer.Canvas.TextOut(r, Line, pn);
          Line := Line + 3 * Abs(Printer.Canvas.Font.Height);
          end;
       end;
       Printer.EndDoc;
    end;

procedure TForm1.Print1Click(Sender: TObject);
begin
    PrintStrings(Memo1.Lines);
end;

ssach 4. Mai 2003 19:52

hy,

jetzt bekommeich immer die Fehlermeldung:

Code:
[Error] Unit1.pas(97): Illegal character in input file: '*' ($A0)
bei der Zeile

Delphi-Quellcode:
LINE := 0;
tut mir leid dass ich sooft frage aber bin eben noch en anfaenger!*g*

danke fur eure hilfe!!!!!!

cu

[edit=Daniel B]BB-Code wieder eingeschaltet, damit die Tags funktionieren. MfG Daniel B.[/edit]

flomei 4. Mai 2003 20:24

Zitat:

Zitat von ssach
Code:
[Error] Unit1.pas(97): Illegal character in input file: ' ' ($A0)
bei der Zeile

Delphi-Quellcode:
LINE := 0;

Probier doch mal
Delphi-Quellcode:
Line:=0;
Ich weiss nicht ob es daran liegt aber ausprobieren kann man das ja mal. :D

MfG Florian :hi:

APP 4. Mai 2003 20:24

Hallo ssach,

komisch, habe VOR dem Post die Prozedur getestet, JETZT wieder, funkt alles, allerdings könnte das mit Daniels
Zitat:

[edit=Daniel B]BB-Code wieder eingeschaltet, damit die Tags funktionieren. MfG Daniel B.[/edit]
Nachricht was zu tun haben :mrgreen:

Versuche es noch einmal und kopiere Dir den Code noch einmal aus meiner obigen Antwort.

flomei 4. Mai 2003 20:26

Zitat:

Zitat von APP
allerdings könnte das mit Daniels
Zitat:

[edit=Daniel B]BB-Code wieder eingeschaltet, damit die Tags funktionieren. MfG Daniel B.[/edit]
Nachricht was zu tun haben :mrgreen:

Wenn das jetzt kein Scherz war dann muss ich aber lachen. :lol:

MfG Florian :hi:

APP 4. Mai 2003 20:34

Hallo flomei,

NEIN, das war kein Scherz, ich dachte mir $A0 schaut verdächtig nach HTML aus, da Daniel den BB-Code ausgeschaltet hatte, vermutete ich, dass ssach während dieser Zeit meinen Code herauskopierte und dieser eben falsch Dargestellt wurde.

btw.
Delphi-Quellcode:
Line:=0;
ist doch auch nur ein Scherz, oder :mrgreen: :mrgreen:

flomei 4. Mai 2003 20:39

Code:
$A0
Könnte auch eine Compiler Fehlermeldung seien.

Zitat:

Zitat von APP
Delphi-Quellcode:
Line:=0;
war doch auch nur ein Scherz, oder? :mrgreen: :mrgreen:

:|

Zitat:

Zitat von flomei
Ich weiss nicht ob es daran liegt aber ausprobieren kann man das ja mal. :D

Lesen ---> Verstehen ---> Überlegen was man sagt ;)

Kann ja nicht mehr als falsch sein, oder?

MfG Florian :hi:

ssach 4. Mai 2003 20:40

vielen dank,

es funzt jetzt!!

cu

ssach 4. Mai 2003 20:43

aber wenn es euch nichts ausmacht mir auf noch eine frage zu antworten:

wie krieg ich es hin dass ein printdialog aufgeht?

vielen danke

cu

APP 4. Mai 2003 20:47

@flomei

Zitat:

Zitat von flomei
Lesen ---> Verstehen ---> Überlegen was man sagt ;)

Zitat:

Zitat von APP
...komisch, habe VOR dem Post die Prozedur getestet, JETZT wieder, funkt alles,...

wie recht Du hast, aber ich denke wir sollten es nun dabei belassen,
ssach hat nun eine Lösung und ist happy.

Daniel B 4. Mai 2003 20:54

Hallo,
Zitat:

Zitat von ssach
aber wenn es euch nichts ausmacht mir auf noch eine frage zu antworten: wie krieg ich es hin dass ein printdialog aufgeht?

PrintDialog.Execute.

Grüsse, Daniel :hi:

APP 4. Mai 2003 20:56

@ssach

Delphi-Quellcode:
   IF PrintDialog1.Execute THEN
      PrintStrings(Memo1.Lines);
allerdings mußt Du nun die gewünschten Einstellungen die der User vorgenommen hat wie z.B.
Delphi-Quellcode:
PrintDialog1.Copies
noch an die Prozedur PrintStrings übergeben damit sie "greifen".

ssach 4. Mai 2003 21:12

ok, vielen vielen dank, werde dies mal testen und dann bescheid geben!!
danke, cu

Mirilin 4. Mai 2003 21:16

Delphi-Quellcode:
if printdialog.execute then
begin
...
...
end;
//wow, da hat mir der Opera eine alte version des Threads serviert, war schon beantwortet.

ssach 5. Mai 2003 21:33

vielen dank,

funzt alles,
weiss nur noch nicht genau wie ich dei EIgenschaften soll an PrintStrings(); weitergeben soll damit sie auch greifen?
kann jemand mir bitte helfen?
danke
cu

APP 6. Mai 2003 08:41

Hallo ssach,

Du könntest z.B. die Anzahl der Ausdrucke so lösen:

Delphi-Quellcode:
PROCEDURE TForm1.Button1Click(Sender: TObject);
VAR
   i                              : Integer;
BEGIN
   IF PrintDialog1.Execute THEN
      BEGIN
         FOR i := 1 TO PrintDialog1.Copies DO
            PrintStrings(Memo1.Lines);
      END;
END;
die anderen Einstellungen des Dialogs kann man (zumindest bei mir)
nicht verändern, die Eigenschaften des jeweiligen Druckers werden
durch den Druckertreiber gelöst und "greifen" sowiso.

Niels 29. Okt 2003 23:01

Re: Drucken eines Textes von einer TMemo
 
Tach!

Delphi-Quellcode:
PrintDialog1.Execute;
Es gibt auch noch den PrinterSetupDialog...den öffnest du dann entsprechend mit

Delphi-Quellcode:
PrinterSetupDialog1.Execute;
Niels


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 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-2025 by Thomas Breitkreuz