Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

RichTextBox und Tabulatoren

Empfohlene Antworten

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

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 ;)

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.

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. ;)

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.