WYSIWYG in RichTextBox

10/12/2007 - 11:07 von Wilfried Dietrich | Report spam
Hallo NG'ler,

wie bekomme ich folgendes gebacken:

Ich habe beim Drucken eine feste Breite von z.B. 178 mm.
Nun möchte ich, dass der Benutzer beim Schreiben in der
RichTextBox genau die gleiche Breite zur Verfügung hat und
sich die automatischen Zeilenumbrüche genau an der Stelle
befinden wie es auch im Druck ist.
Ich kann die Eingabebreite der RichTextBox auch auf diese
178mm einstellen mit:

(1440 Twips = 1 inch = 2,54cm)
Dim sglMulti As Single
sglMulti = 178 * (1440 / 2.54) / 10
RichTextBox1.Width = sglMulti

aber trotzdem bricht die RichTextBox je nach Schriftgrad
die Zeile ein paar Zeichen spàter oder eher um.

Wie kann ich mit wenig Mitteln (Code) dem Benutzer den Text
genauso anzeigen bzw. eingeben lassen wie es auch gedruckt wird?
(Nur für den Standarddrucker)

Danke für Eure Bemühungen
Gruß
Wilfried
 

Lesen sie die antworten

#1 Thorsten Albers
10/12/2007 - 12:03 | Warnen spam
Wilfried Dietrich schrieb im Beitrag
<#...
(1440 Twips = 1 inch = 2,54cm)
Dim sglMulti As Single
sglMulti = 178 * (1440 / 2.54) / 10
RichTextBox1.Width = sglMulti

aber trotzdem bricht die RichTextBox je nach Schriftgrad
die Zeile ein paar Zeichen spàter oder eher um.



Über die Width-Eigenschaft setzt Du die >>àußere<< Breite der RTFBox, die
innere<< kann sich davon unterscheiden, denn die RTFBox hat




möglicherweise noch eine Fensterrahmen, der ja auch einen gewissen Teil der
Gesamtbreite beansprucht. Selbst bei einer RTFBox ohne Fensterrahmen wird
die innere Breite vermutlich immer geringer als die àußere sein, denn
üblicherweise definieren solche Steuerelemente noch einen 'inneren Rahmen',
der dafür sorgt, daß der eingegebene Text nicht direkt an den Fensterrand
'angeklatscht' ist.
Bei einer RTFBox ist, wenn ich nicht irre, das Rechteck, daß den
'absoluten' Text ohne zusàtzlichen Rand umschließt, das
'Formatierungs-Rechteck' (formatting rectangle). Dessen Ausmaße erfragst
Du, indem Du an das RTFBox-Fenster die Nachricht EM_GETRECT schickst, und
Du ànderst es entsprechend mit der Nachricht EM_SETRECT (bzw.
EM_SETRECTNP).
Du kannst dieses 'Formatierungs-Rechteck' entweder nutzen, um die
notwendige Gesamtgröße der RTFBox zu ermitteln und anzupassen, bis das
'Formatierungs-Rechteck' die gewünschte Breite hat, oder Du ànderst einfach
nur die Breite dieses 'Formatierungs-Rechteckes' unabhàngig von der
RTFBox-Breite. Genauere Informationen zum Vorgehen findest Du in der
Beschreibung der genannten EM_*-Nachrichten.

-
THORSTEN ALBERS Universitàt Freiburg
albers@
uni-freiburg.de
-

Ähnliche fragen