Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#1

RTF - Absatzhintergrund setzen

  Alt 5. Jul 2011, 08:27
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:
Style and colors used for background shading. Bits 0 to 3 contain the shading style, bits 4 to 7 contain the foreground color index, and bits 8 to 11 contain the background color index.
Wenn ich das richtig deute, bestimmt somit das niederwertigste Nibble den Stil, das folgende Nibble die Vordergrundfarbe und das wiederum darauf folgende die Hintergrundfarbe laut Tabelle. Versuchen wir also mal Folgendes: Verhältnis Vordergrund/Hintergrund 50%, beide Farben auf Hellgrau, kein Füllstil. Wenn ich das richtig verstehe (und gerade das scheint ja nicht so zu sein), hieße das:
Delphi-Quellcode:
ParaFormat.wShadingWeight := 50;
ParaFormat.wShadingStyle := $0F shl 4 or $0F shl 8; //oder auch gleich $FF shl 4
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?

[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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 5. Jul 2011 um 08:33 Uhr)
  Mit Zitat antworten Zitat