Zum Inhalt springen

RichTextBox und Tabulatoren


Empfohlene Beiträge

Geschrieben

Hallo,

bin gerade dabei, einen kleinen Texteditor zu schreiben. Eigentlich soll der nichts großartiges können. Nur Text formatieren, links- rechtsbündig, zentriert, und Tabulatoren soll er handeln können. So weit funktioniert auch alles ganz gut, allerdings stoße ich beim Thema rechtsbündige, zentrierte oder dezimal-Tabulatoren auf heftigen Widerstand seitens der RichTextBox. Ich finde keine Eigenschaft, um das Alignment eines Tabulators zu verändern. Bin jetzt schon seit 2 Tagen am suchen, wie man das machen kann, aber noch nicht richtig fündig geworden. Sämtliche Programmbeispiele hierzu unterschlagen das Thema Tabulatoren entweder total oder sind auch auf linksbündige Tabulatoren beschränkt, genau wie mein Programm.

Hier stand mal jemand vor dem gleichen Problem, aber mit dem Lösungsansatz am Ende kann ich ehrlichgesagt nicht viel anfangen... :(

Habe mal mein bisheriges Projekt mit angehängt. Vielleicht hat ja jemand eine(n) Lösung(sansatz) parat. Würde mich jedenfalls sehr freuen und wäre dankbar, komme hier nämlich absolut nicht weiter.

Programmiersprache ist übrigens VB.NET in VS 2005.

lg

RtfControl.rar

Geschrieben

Das Rich Text Format unterstützt soweit ich weiß nur normale, also linksbündige Tabs. Daher wird ein Steuerelement, das auf diesem Format aufbaut, wohl auch nicht mehr können.

Im Übrigen stelle ich mir unter "Texteditor schreiben" etwas anderes vor als einen Wrapper um ein fertiges Control, aber das ist nur meine persönliche Meinung ;)

Geschrieben

Richtext-FORMAT unterstützt sehr wohl rechtsbündige, zentrierte und dezimale Tabs, genauso wie linksbündige. Einzig Wordpad und die RichTextBox aus dem Framework wollen sie einfach nicht unterstützen.

Die RichTextBox konnte ich hiermit inzwischen anpassen. Tabs werden jetzt alle richtig behandelt.

Einzig beim Einlesen eines RTF-Dokuments habe ich jetzt ein Problem, wenn der am weitesten rechts stehende Tab linksbündig ist. Dieser wird dann nämlich so behandelt, wie der vorhergehende. Liegt wohl daran, dass es für linksbündige Tabs keine gesonderte Markierung gibt (z.b. \tql ), im Gegensatz zu allen anderen ( \tqr, \tqdec, \tqc).

P.S. Was sich die Leute unter einem Texteditor vorstellen, hat mich auch gar nicht interessiert. Sorry.

Geschrieben
Richtext-FORMAT unterstützt sehr wohl rechtsbündige, zentrierte und dezimale Tabs, genauso wie linksbündige.
Stimmt, hab gerade noch mal nachgesehen. Man sollte sich nicht immer auf die Erinnerung verlassen.

Einzig beim Einlesen eines RTF-Dokuments habe ich jetzt ein Problem, wenn der am weitesten rechts stehende Tab linksbündig ist. Dieser wird dann nämlich so behandelt, wie der vorhergehende. Liegt wohl daran, dass es für linksbündige Tabs keine gesonderte Markierung gibt (z.b. \tql ), im Gegensatz zu allen anderen ( \tqr, \tqdec, \tqc).
Das ist vermutlich ein Bug im Steuerelement. Die RTF-Implementierung des .NET-Controls scheint nach dem, was ich im Web gefunden habe, ohnehin unvollständig zu sein.

P.S. Was sich die Leute unter einem Texteditor vorstellen, hat mich auch gar nicht interessiert. Sorry.
Kein Problem. Ich finde es nur immer drollig, wenn z.B. jemand ein GUI-Programm mit einem IE-Control schreibt, und dann glaubt, er hätte einen eigenen Browser geschrieben. ;)
Geschrieben

Das Ganze weitet sich zu einem großen Problem aus... An sich funktioniert das Control jetzt richtig gut, man kann verschiedenartige Tabstopps setzen, die von der RichTextBox auch richtig interpretiert werden.

Ein Problem tritt nun auf, wenn ich der Eigenschaft RichTextBox.Rtf beispielsweise folgenden RTF übergebe:

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}}

\viewkind4\uc1\pard\tqr\tx2000\tqc\tx3000\tx4000\f0\fs20 Hello\tab World\tab !\line Das\tab ist\tab ein Test\par

\par

}

Entscheidend dabei ist der Abschnitt

\tqr\tx2000\tqc\tx3000\tx4000

bedeutet:

-Rechtsbündiger Tabstopp an Position 2000 (\tqr)

-Zentrierter Tabstopp an Position 3000 (\tqc)

-Linksbündiger Tabstopp an Position 4000 (kein extra Tag)

In dem Moment, in dem mit der Eigenschaft RichTextBox.RTF die Zeichenkette übergeben wird, ändert die RichTextBox den RTF allerdings fatalerweise sofort ab, der entscheidende Abschnitt wird geändert in

\tqr\tx2000\tqc\tx3000\tqc\tx4000

Hat zur Folge, dass der letzte Tabstopp auf einmal auch ein zentrierter ist.

Das allertollste daran ist, dass dieses Verhalten nur unter Windows Vista auftritt, unter Windows XP (SP2, 3) passiert das nicht. Sprich, der RTF wird nach der Übergabe nicht derart verändert und die Tabstopps sind alle korrekt.

Davon betroffen ist außerdem beispielsweise List&Label von combit, das wir hier im Einsatz haben. RTF Texte werden damit unter Windows Vista falsch ausgedruckt, unter XP korrekt.

Wie ich jetzt mit dem Problem umgehen soll, ist mir schleierhaft. Werd wohl jetzt erstmal nen Supportcall bei Microsoft aufmachen, aber ob da was bei rauskommt...

Das aktuelle Projekt habe ich nochmal mit angehängt, evtl kann ja jemand damit was anfangen...

lg

RtfControl.rar

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...