Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mo 02.03.15 18:25 
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 user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 02.03.2015 um 22:32

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 03.03.15 21:21 
user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
Wenn diese Komponente das Wysiwyg-Drucken nicht unterstützt, mußt du das via Drucker-Canvas selber implementieren.


ausblenden 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?

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 oder bei Github.

Für diesen Beitrag haben gedankt: galagher
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mi 04.03.15 17:58 
user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
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...

user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
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!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 04.03.15 20:40 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
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 ...

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Do 05.03.15 18:11 
user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
Natürlich nur schwarz, weil diese Komponente keine Druckausgabe hat, die etwas anderes ermöglicht.
Ja, so ist es...

user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
Ich bezweifle, daß die Delphi-IDE mit dieser Komponente gestrickt wurde ...
Sicherlich nicht, so meinte ich es auch nicht!

user profile iconPerlsau hat folgendes geschrieben Zum zitierten Posting springen:
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!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!