Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Programm druckt nicht immer.
Tony-S - Do 26.02.09 22:23
Titel: Programm druckt nicht immer.
Hallo Community,
ich habe eine Art "Wordpad" geschrieben, und bin jetzt durch Zufall auf ein Problem gestossen, was mir nicht ganz klar ist. Ich habe 2 verschiedene RTF-Dokumente mit diesem Programm geschrieben, und wollte diese aus Testzwecken beide drucken. Leider wird aber nur eins der beiden gedruckt.
Im Anhang befindet sich:
- Das Programm-
Der Druckdialog (vllt liegt es ja schon daran) sieht so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.Drucken1Click(Sender: TObject); begin
if printdialog1.Execute=true then RichEdit1.Print(RichEdit1.Lines.Text); end;
bzw
procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin
if (key = ord('P')) and (ssctrl in shift) then begin if printdialog1.execute then RichEdit1.Print(RichEdit1.Lines.Text); (...) |
Moderiert von
Narses: Dateien als Anhang hochgeladen
// Info-Blatt ist die Datei, die sich nicht drucken lässt.
// Notiz ist die Datei, die sich drucken lässt.
Wäre nett von euch, mir zu sagen, woran es liegt das die eine Datei nicht gedruckt wird. Danke schonmal.
Moderiert von
Narses: Delphi-Tags hinzugefügt
Dude566 - Do 26.02.09 22:36
Mach dein Quellcode doch bitte in die Delphi Tags.
Tony-S - Do 26.02.09 22:46
Das geht wie ^^? - möchte aller dings auch nicht den ganzen Text hier öffentlich stellen
Tony-S - Do 26.02.09 23:33
Hm k, der Witz ist, ich möchte hier nicht den ganzen Text posten von daher,
was könnte denn falsch sein, kann ja nur am Drucken liegen.
Narses - Fr 27.02.09 01:02
Moin!
Tony-S hat folgendes geschrieben : |
Leider wird aber nur eins der beiden gedruckt. |
Was genau heißt das denn, was passiert? Löst du den Druck über Strg+P aus? :gruebel:
cu
Narses
Timosch - Fr 27.02.09 14:00
Wenn du ein MainMenu benutzt, lassen sich Shortkeys viel leichter implementieren. Schau dir mal die entsprechende Eigenschaft des Menüeintrags an.
Tony-S - Fr 27.02.09 18:24
Ich kann den Druck einmal über das Mainmenu öffnen File --> open o. Über Strg + P . Die Frage ist nur wieso das eine Dokument nicht gedruckt wird, d.h., es wird kein Druckdialog gestartet, wenn ich das zuvor geöffnete Dokument öffnen möchte. Gibt es da keinen Grund für??
Timosch - Fr 27.02.09 18:33
Tony-S hat folgendes geschrieben : |
Ich kann den Druck einmal über das Mainmenu öffnen File --> open o. Über Strg + P . Die Frage ist nur wieso das eine Dokument nicht gedruckt wird, d.h., es wird kein Druckdialog gestartet, wenn ich das zuvor geöffnete Dokument öffnen möchte. Gibt es da keinen Grund für?? |
Wie ich schon sagte: Stell im MenuItem für Drucken den ShortCut Strg+P ein. Dann kannst du dir diese ganze Prozedur sparen.
Mal ganz ins Blaue geraten: Wahrscheinlich ist nicht immer das RichEdit im Fokus.
Tony-S - Fr 27.02.09 21:43
Nein das wäre ja Blödsinn, ich kann mit beiden Methoden das Dokument nicht drucken!
- Das andere Dokument lässt sich mit beiden Prozeduren drucken..
jaenicke - Di 03.03.09 21:48
Das nicht druckbare Dokument enthält ein eingebettetes RTF-Objekt (der ganze Inhalt), ich vermute einmal, dass das deshalb nicht geht. Ausprobiert, was bei mir da passiert, habe ich noch nicht.
jaenicke - Di 03.03.09 22:37
Nein, der Fehler liegt ganz wo anders. Der zum Drucken angegebene Titel ist einfach zu lang...
Ich hatte mich ja schon gewundert, warum du den ganzen Text als Überschrift beim Drucken haben willst. Aber in dem Fall funktioniert es so gar nicht. Am besten nimmst du nur die erste Zeile oder den Dateinamen oder eine eigene Überschrift oder so.
Nebenbei ist dein Vergleich auf true falsch:
Delphi-Quelltext
1:
| if printdialog1.Execute=true then |
Das kann ins Auge gehen.
Der Vergleich mit Booleanwerten ist nicht nur unschön und unlogisch, sondern falsch.
Hier habe ich mal ein kleines Beispiel gebastelt, wann es schief geht:
http://www.delphi-forum.de/viewtopic.php?p=548760#548760
Mehr dazu steht hier:
http://www.delphi-treff.de/tutorials/objectpascal/programmierung-mit-boolean-werten/page/4/
Tony-S - Di 03.03.09 22:49
Hm wie meinst du das der Titel zum Drucken ist zu lang, im Infoblatt steht ja nur "expression (c)" in Notiz hingegen "eXpression lite (c), ist in der Lage, in verschiedenen Farben, Schriftarten und Größen zu " wäre also länger, auch wenn ich nur ein Wort als "Überschrift" nehme wird es nicht gedruckt
und das mit execute = true, hast du mir ja schonmal erklärt, das war dort nur, weil ich es kopiert hatte.
jaenicke - Di 03.03.09 23:14
Tony-S hat folgendes geschrieben : |
Hm wie meinst du das der Titel zum Drucken ist zu lang |
Naja, du übergibst doch als Seitenüberschrift den gesamten Text.
Tony-S hat folgendes geschrieben : |
auch wenn ich nur ein Wort als "Überschrift" nehme wird es nicht gedruckt |
Also bei mir (Turbo Delphi / Delphi 2006) funktioniert es dann. Welche Version benutzt du denn? Und mit welchem Quelltext ging es dann nicht?
Tony-S - Mi 04.03.09 00:11
jaenicke hat folgendes geschrieben : |
Naja, du übergibst doch als Seitenüberschrift den gesamten Text. |
Du meinst praktisch den Titel den der Drucker dann angibt?
Hab einfachmal "Notiz" als Überschrift genommen, und gedruckt hat es nicht.
auch wenn ich nur ein Wort als "Überschrift" nehme wird es nicht gedruckt
jaenicke hat folgendes geschrieben : |
Welche Version benutzt du denn? |
Delphi 7
Und mit welchem Quelltext ging es dann nicht?
Das ist eigentlich noch derselbe Text ^^ nur ohne execute = true, aber daran wirds nich liegen ;D
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key = ord('P')) and (ssctrl in shift) then begin if printdialog1.execute then RichEdit1.Print(RichEdit1.Lines.Text); |
und
Delphi-Quelltext
1:
| if printdialog1.Execute then RichEdit1.Print(RichEdit1.Lines.Text); |
Der Fehler liegt wohl in dem was ich RichEdit1.Print in Klammer zuweise - ja ?
Wenn ja und wenn es daran liegt müsste ich in Klammer ja so etwas rein schreiben wie Zeile 1...
:D ehm ich denk nach vllt isses ja ganz leicht
Moderiert von
Narses: Delphi- und Quote-Tags hinzugefügt
jaenicke - Mi 04.03.09 00:21
Tony-S hat folgendes geschrieben : |
Delphi-Quelltext 1:
| if printdialog1.Execute then RichEdit1.Print(RichEdit1.Lines.Text); | |
Du übergibst doch immer noch den gesamten Text als Überschrift... :roll:
Vielleicht solltest du dir einmal die Hilfe anschauen was der Parameter eigentlich macht, denn das ist dir offenbar ja nicht klar.
Tony-S - Mi 04.03.09 00:27
Ich weiß jetzt nicht, ob das die schlaueste Methode is was ich gemacht habe ^^.... aber ES GEHT
if printdialog1.Execute then RichEdit1.Print(RichEdit1.Lines[1]);
höhö ^^
jaenicke - Mi 04.03.09 00:30
Und was, wenn das Dokument nur eine Zeile hat, du aber versuchst die zweite zu nehmen? :roll:
Wie wäre es mit einem passenden Text...
Delphi-Quelltext
1: 2:
| if PrintDialog1.Execute then RichEdit1.Print('Mein Druckauftrag'); |
Oder wie wäre es wie gesagt mit dem Dateinamen, da es ja ein Editor ist?
Tony-S - Mi 04.03.09 00:34
Ok wusste nicht as ich praktisch einen "beliebigen Text" übergeben kann, zumindestens weiß ich jetzt woran es liegt. Danke
jaenicke - Mi 04.03.09 00:49
Das steht doch in der Hilfe. Der angegebene Text steht in der Liste der Druckaufträge, weshalb da normalerweise der Dateiname oder ähnliches drin steht. Damit man den Druckauftrag identifizieren kann, wenn es mehrere sind.
Ich pack mal ein Bild in den Anhang, in dem Fall habe ich diese Seite vom Browser aus gedruckt, deshalb steht da der Titel der Seite...
Zorro - Mi 04.03.09 14:16
Der Begriff "Überschrift", um den Namen des Druckauftrages zu bezeichnen, klingt wohl eher verwirrend, da der weniger geübte User/Programmierer damit wohl etwas wie eine Kapitelüberschrift oder Seitenüberschrift assoziiert und nicht denjenigen (kurzen) Text, der in der Liste der Druckaufträge erscheinen soll.
Greetz Zorro
jaenicke - Mi 04.03.09 16:04
Es ist die Überschrift des Druckauftrags, und der englische Name des Parameters ist Caption...
Was das bedeutet steht ja in der Hilfe.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!