![]() |
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 |
nene der printdialog ist nur da um die beliebigen eigenschaften zum drucken einzustellen, drucken tut man mit dem printer-objekt:
Zitat:
|
Hallo,
und ab nach VCL-Komponenten. Grüsse, Daniel :hi: |
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 |
Hallo,
Zitat:
Grüsse, Daniel :hi: |
achso, ok, hatte wohl nicht aufgepasst!
danke, cu p.s.; wewiss jemand warum nur bei der foherigen procedure die erste zeile gedruckt wird? |
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 ![]()
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; |
hy,
jetzt bekommeich immer die Fehlermeldung:
Code:
bei der Zeile
[Error] Unit1.pas(97): Illegal character in input file: '*' ($A0)
Delphi-Quellcode:
tut mir leid dass ich sooft frage aber bin eben noch en anfaenger!*g*
LINE := 0;
danke fur eure hilfe!!!!!! cu [edit=Daniel B]BB-Code wieder eingeschaltet, damit die Tags funktionieren. MfG Daniel B.[/edit] |
Zitat:
Delphi-Quellcode:
Ich weiss nicht ob es daran liegt aber ausprobieren kann man das ja mal. :D
Line:=0;
MfG Florian :hi: |
Hallo ssach,
komisch, habe VOR dem Post die Prozedur getestet, JETZT wieder, funkt alles, allerdings könnte das mit Daniels Zitat:
Versuche es noch einmal und kopiere Dir den Code noch einmal aus meiner obigen Antwort. |
Zitat:
MfG Florian :hi: |
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:
ist doch auch nur ein Scherz, oder :mrgreen: :mrgreen:
Line:=0;
|
Code:
Könnte auch eine Compiler Fehlermeldung seien.
$A0
Zitat:
Zitat:
Kann ja nicht mehr als falsch sein, oder? MfG Florian :hi: |
vielen dank,
es funzt jetzt!! cu |
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 |
@flomei
Zitat:
Zitat:
ssach hat nun eine Lösung und ist happy. |
Hallo,
Zitat:
Grüsse, Daniel :hi: |
@ssach
Delphi-Quellcode:
allerdings mußt Du nun die gewünschten Einstellungen die der User vorgenommen hat wie z.B.
IF PrintDialog1.Execute THEN
PrintStrings(Memo1.Lines);
Delphi-Quellcode:
noch an die Prozedur PrintStrings übergeben damit sie "greifen".
PrintDialog1.Copies
|
ok, vielen vielen dank, werde dies mal testen und dann bescheid geben!!
danke, cu |
Delphi-Quellcode:
//wow, da hat mir der Opera eine alte version des Threads serviert, war schon beantwortet.
if printdialog.execute then
begin ... ... end; |
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 |
Hallo ssach,
Du könntest z.B. die Anzahl der Ausdrucke so lösen:
Delphi-Quellcode:
die anderen Einstellungen des Dialogs kann man (zumindest bei mir)
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; nicht verändern, die Eigenschaften des jeweiligen Druckers werden durch den Druckertreiber gelöst und "greifen" sowiso. |
Re: Drucken eines Textes von einer TMemo
Tach!
Delphi-Quellcode:
Es gibt auch noch den PrinterSetupDialog...den öffnest du dann entsprechend mit
PrintDialog1.Execute;
Delphi-Quellcode:
Niels
PrinterSetupDialog1.Execute;
|
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