![]() |
RTF - Absatzhintergrund setzen
Ich habe ein kleines Tool geschrieben, das aus einem bestimmten Forum (nein, nicht die DP *g*) neue Einträge ermittelt und diese dann in einem RichEdit darstellt. Dabei wird der ggf. vorhandene phpBB-Code geparsed und in RTF umgewandelt. Das klappt auch alles prima, nur beiße ich mir an einem Problem die Zähne aus: da ich auch die Möglichkeit biete, das RTF als Datei abzuspeichern, würde ich Zitate dort gern mit einem hellgrauen Absatzhintergrund versehen, falls jemand diese Datei später mit Word öffnet. Die bisherige Absatzformatierung gestalte ich mittels EM_SETPARAFORMAT und einem PARAFORMAT2-Record. Dieser enthält ja auch die Felder wShadingWeight und wShadingStyle. Zu wShadingStyle sagt das MSDN:
Zitat:
Delphi-Quellcode:
Damit wird der Absatz aber nicht hellgrau, sondern schwarz. Shiftet man etwas weiter, kommen andere Farben heraus (einen weiter nach links z.B. wird es Magenta). Ich habe noch kein Muster erkennen können, weiß somit auch nicht, wo mein Denkfehler liegt. Kann mich mal jemand erhellen?
ParaFormat.wShadingWeight := 50;
ParaFormat.wShadingStyle := $0F shl 4 or $0F shl 8; //oder auch gleich $FF shl 4 [edit] @Mods: wegen TRichEdit (das ja irgendwie damit zu tun hat) habe ich das Thema in dieser Sparte erstellt, falls das aber unter Win32-API besser aufgehoben ist, bitte verschieben. Danke [/edit] |
AW: RTF - Absatzhintergrund setzen
Warum machst Du es nicht so:
Delphi-Quellcode:
Und gefühlt ist $0770 eher Grau oder vllt. $00F0 ?
ParaFormat.wShadingStyle := $0FF0;
Ich hab es nicht so mit den Farben. Gruß K-H |
AW: RTF - Absatzhintergrund setzen
Nunja, das kommt ja auf dasselbe heraus. Das Problem sind weniger die Zahlwerte an sich, sondern, dass das Setzen nicht das Ergebnis bringt, das ich aus der MSDN-Hilfe herauslese. Laut Tabelle ist der ColorIndex für Hellgrau 15, ich müsste also Nibble 1 und 2 (wenn man konsequenterweise bei 0 zu zählen beginnt) auf 15 setzen, das tun ja alle von Dir und mir beschriebenen Wege. Nur das Ergebnis ist eben nicht das erwartete.
Trotzdem Danke |
AW: RTF - Absatzhintergrund setzen
Mach es doch so wie Word über
Zitat:
Hellgrau(5%) --> \cbpat17 bei dieser Colortable:
Code:
Gruß
{\colortbl;
\red0\green0\blue0; \red0\green0\blue255; \red0\green255\blue255; \red0\green255\blue0; \red255\green0\blue255; \red255\green0\blue0; \red255\green255\blue0; \red255\green255\blue255; \red0\green0\blue128; \red0\green128\blue128; \red0\green128\blue0; \red128\green0\blue128; \red128\green0\blue0; \red128\green128\blue0; \red128\green128\blue128; \red192\green192\blue192; \red243\green243\blue243;} K-H |
AW: RTF - Absatzhintergrund setzen
Und wie bekomme ich das hin, ohne auf die Rohdaten zurückzugreifen?
|
AW: RTF - Absatzhintergrund setzen
Zitat:
Ich hatte es so verstanden, daß Du den RTF-File generierst. Gruß K-H |
AW: RTF - Absatzhintergrund setzen
Nein, ich benutze ein TRichEdit zur Anzeige und möchte lediglich für das Speichern als Datei den Absatzhintergrund setzen (RichEdit unterstützt ja eine derartige Anzeige leider nicht, Word schon).
|
AW: RTF - Absatzhintergrund setzen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, ich sah den Hilferuf bei lima-city - wo ich leider gesperrt bin - und habe mich darum hier angemeldet, um antworten zu können.
Also, das mit den Hintergrundfarben geht durchaus mit TRichEdit, vorausgesetzt man weiß wie. Ich habe das auch schon mit Delphi 5 unter Windows XP eingesetzt. Aus PDF-Datei extrahiert ( Toolbox 5/2005, Seite 91 ) : Erweiterte Formate im Richeditfeld Mit der Struktur TCharFormat lassen sich beim RichEdit- Feld in Delphi weitere Text-Formatierungen einstellen: PROCEDURE TForm1.SetCharFormat(CharacterFormat: INTEGER); Icon.Free; // Subscript / Superscript // ... VAR Format: TCharFormat; BEGIN FillChar(Format, SizeOf(Format), 0); WITH Format DO BEGIN cbSize := SizeOf(Format); dwMask := CFM_OFFSET; CASE CharacterFormat OF CFE_Superscript: yOffset := 40; CFE_Subscript : yOffset := -40; 0 : yOffset := 0; END; END; Unter Windows XP ist die von der Komponente genutzte RICHED32.DLL (Version 1) nur noch ein Wrapper für RICHED20.DLL (Version 3). Dadurch werden Formatie- rungen mit der Struktur CHARFORMAT2 ermöglicht: Hintergrundfarbe PROCEDURE TForm1.SetBColor(AColor: TColor); VAR Format: CHARFORMAT2; BEGIN FillChar(Format, SizeOf(Format), 0); WITH Format DO BEGIN cbSize := SizeOf(Format); dwMask := CFM_BACKCOLOR; crBackColor := AColor; RE.Perform(EM_SETCHARFORMAT, SCF_SELECTION, LongInt(@Format)); END; END; Die einzelnen Funktionen zeigt das Beispielprogramm auf der CD-ROM im Zusammenhang. (Wolfgang Beintvogl) Wie ich gerade sehe, sind Anhänge möglich. Also packe ich doch gleich mal das Beispielprogramm dazu. Viel Glück. |
AW: RTF - Absatzhintergrund setzen
Liste der Anhänge anzeigen (Anzahl: 1)
Herzlichen Dank, vor allem, dass Du Dich extra für diese Antwort angemeldet hast. Ich habe das Projekt nicht ausprobiert, aber anhand des Quelltextes scheint es dort um den Zeichenhintergrund zu gehen. Das ist leider nicht das, was ich möchte, mir geht es um den Absatz. Zur Verdeutlichung ein Screenshot anbei.
Trotzdem Danke für Deine Mühe |
AW: RTF - Absatzhintergrund setzen
Schade ! Anhand der Grafik sah ich jetzt den erheblichen Unterschied. Mich würde es auch stören, wenn man dann extra die Zeilen mit Leerzeichen auffüllen müßte.
Nunja, extra anmelden ... Das kann doch für die Zukunft nur nützlich sein. Ich werde mal meine alten Quellen ( ich habe eine Weile nichts mit Delphi gemacht ) noch weiter durchsehen und auch bei Gelegenheit gezielt im Internet recherchieren. Das RTF-Format hatte mich auch schon immer gereizt. Anhand der Angaben von Beintvogl lassen sich mit Sicherheit noch andere Erweiterungen nutzen, sobald man deren Bezeichnungen kennt. Wenn ich was gefunden ( und vorher erprobt ) habe, melde ich mich wieder. Ansonsten liest man sich wohl irgendwann mal wieder hier im Forum. Mal gucken, wo und wie ich da aktiv werde. Viele Grüße und viel Erfolg beim Suchen nach des Rätsels Lösung. Wenn Du was gefunden hast, denke ich mal, daß Du es andere wissen läßt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 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