Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Text farbig mit Attributen wie fett, kursiv usw. drucken
galagher - Mo 02.03.15 18:25
Titel: Text farbig mit Attributen wie fett, kursiv usw. drucken
Hallo!
Ich möchte mit meinem Editor, der Syntax-Highlighting unterstützt, den Text auch genauso, wie er dargestellt wird, drucken. Ich verwende kein RichEdit, da geht das ja, sondern die Jedi-Komponente TJvWideHLEditor.
Wie kann ich damit den Text farbig, fett, kursiv usw. drucken?
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 02.03.2015 um 22:32
Delete - Di 03.03.15 20:11
Wenn diese Komponente das Wysiwyg-Drucken nicht unterstützt, mußt du das via Drucker-Canvas selber implementieren.
galagher - Di 03.03.15 21:21
Perlsau hat folgendes geschrieben : |
Wenn diese Komponente das Wysiwyg-Drucken nicht unterstützt, mußt du das via Drucker-Canvas selber implementieren. |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| Printer.BeginDoc;
Printer.Canvas.Font := aWideHLEditorX.Font;
for i := 0 to aWideHLEditorX.Lines.Count-1 do begin Inc(t, Printer.Canvas.Font.Height+2); Printer.Canvas.TextOut(10, t, aWideHLEditorX.Lines[i]); end;
Printer.EndDoc; |
Naja, so und sowas ähnliches habe ich also nun getestet: Das zieht entweder ein leeres Blatt Papier ohne zu Drucken durch oder es wird eben einfach alles in einer Schriftart, ohne Textattribute gedruckt, und mit
aWideHLEditorX.Lines.Text alles in einer einzigen Zeile.
Ist mein Ansatz mit Canvas so völlig daneben? Was muss ich machen?
Delete - Di 03.03.15 23:56
Wenn du keine Farben angibst, wird natürlich auch nicht farbig gedruckt. Wie du die Farben für jedes einzelne Zeichen ermittelst, kann ich dir aus Unkenntnis der Komponente nicht wirklich sagen.
Vielleicht kannst du ja den Inhalt in ein RTF-Dokument streamen. Wie gesagt kenne ich die von dir eingesetzte Komponente nicht und kann dir daher auch nicht wirklich helfen. Zur Not fragst du mal beim Hersteller nach.
Delete - Mi 04.03.15 12:27
Habe mir die Komponente (ist ja von den Jedis, die hab ich auch) nun doch einmal angeschaut. Die Farben werden erst zur Laufzeit gesetzt, da der Text erst zur Laufzeit geparst wird je nach zugeordnetem Highlighter. Im Gegensatz zum RTF-Text sind im Text dieser Highlighter-Komponente keine Formatierungsangeben verfügbar. Daher kannst du das auch nicht farbig drucken.
Ob eine Highlighter-Komponente überhaupt zum Drucken vorgesehen ist, weiß ich nicht, habe das noch nie ausprobiert.
Vielleicht kann ja
SynEdit das, was du suchst. Du findest es entweder bei
Sourceforge [
http://sourceforge.net/projects/synedit/] oder bei
Github [
https://github.com/SynEdit/SynEdit].
galagher - Mi 04.03.15 17:58
Perlsau hat folgendes geschrieben : |
Die Farben werden erst zur Laufzeit gesetzt, da der Text erst zur Laufzeit geparst wird je nach zugeordnetem Highlighter. Im Gegensatz zum RTF-Text sind im Text dieser Highlighter-Komponente keine Formatierungsangeben verfügbar. Daher kannst du das auch nicht farbig drucken. |
Ich dachte mir, die Farben sind vor dem Drucken ja schon gesetzt, also kann man sie auch genau so drucken...
Perlsau hat folgendes geschrieben : |
Ob eine Highlighter-Komponente überhaupt zum Drucken vorgesehen ist, weiß ich nicht, habe das noch nie ausprobiert. |
Mit
AssignPrn,
Rewrite und
Writeln geht es, ja, aber eben nur schwarz.
Und: Die Delphi-IDE bietet sogar an, den Quellcode mit Syntaxhervorhebung zu drucken, also grundsätzlich funktionieren muss es doch!
Aber alles auf SynEdit umstellen möchte ich nicht, dann bleibt's eben so!
Delete - Mi 04.03.15 20:40
galagher hat folgendes geschrieben : |
Perlsau hat folgendes geschrieben : | Die Farben werden erst zur Laufzeit gesetzt, da der Text erst zur Laufzeit geparst wird je nach zugeordnetem Highlighter. Im Gegensatz zum RTF-Text sind im Text dieser Highlighter-Komponente keine Formatierungsangeben verfügbar. Daher kannst du das auch nicht farbig drucken. | Ich dachte mir, die Farben sind vor dem Drucken ja schon gesetzt, also kann man sie auch genau so drucken... |
Es kommt darauf an, wie die Farben gesetzt sind. Im Unterschied z.B. zu RTF werden hier in der Eigenschaft Lines keine Formatanweisungen (wozu auch z.B. fett und farbig gehören) gespeichert. Soweit ich das gesehen habe, werden die Farben von der Komponente beim Parsen des Textes gesetzt.
galagher hat folgendes geschrieben : |
Perlsau hat folgendes geschrieben : | Ob eine Highlighter-Komponente überhaupt zum Drucken vorgesehen ist, weiß ich nicht, habe das noch nie ausprobiert. | Mit AssignPrn, Rewrite und Writeln geht es, ja, aber eben nur schwarz. |
Natürlich nur schwarz, weil diese Komponente keine Druckausgabe hat, die etwas anderes ermöglicht.
galagher hat folgendes geschrieben : |
Und: Die Delphi-IDE bietet sogar an, den Quellcode mit Syntaxhervorhebung zu drucken, also grundsätzlich funktionieren muss es doch! |
Ich bezweifle, daß die Delphi-IDE mit dieser Komponente gestrickt wurde ...
galagher hat folgendes geschrieben : |
Aber alles auf SynEdit umstellen möchte ich nicht, dann bleibt's eben so! |
Das mußt du selber wissen ... Ich habe bislang noch nie irgend einen Highlight-Text aus einer meiner Anwendungen heraus drucken müssen, daher kann ich dir nichts weiter dazu sagen.
galagher - Do 05.03.15 18:11
Perlsau hat folgendes geschrieben : |
Natürlich nur schwarz, weil diese Komponente keine Druckausgabe hat, die etwas anderes ermöglicht. |
Ja, so ist es...
Perlsau hat folgendes geschrieben : |
Ich bezweifle, daß die Delphi-IDE mit dieser Komponente gestrickt wurde ... |
Sicherlich nicht, so meinte ich es auch nicht!
Perlsau hat folgendes geschrieben : |
Ich habe bislang noch nie irgend einen Highlight-Text aus einer meiner Anwendungen heraus drucken müssen, |
Musste ich auch noch nicht, und brauchen werde ich das sicher auch nie! Ich dachte einfach, wäre schön, wenn man es hinbekommt, aber ich kann gut damit leben, wenn nicht!
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!