| |
VB.NET - Ein- und UmsteigerRichTextBox, zusätzliche Eigenschaften | | | Autor: spatzimatzi | Datum: 22.11.16 12:29 |
| Hallo,
habe mir eine kleine (wirklich kleine) Textverarbeitung mit Hilfe der Eigenschaften der RichTextBox zusammengebastelt.
Leider fehlen mir einige Formatierungen. Diese würde ich gerne simulieren durch direkte RTF-Text-Anpassungen.
Getestet habe ich die gewünschten Eigenschaften über WordPad und anschließendem Öffnen des Dokumentes bzw. mit Hilfe eines Text-Editors. Dabei habe ich die gewünschte Syntax direkt von Hand in die Dokumente eingebaut und anschließend in das RTF-Control eingelesen.
Das hat alles sehr gut funktioniert. Die Box scheint somit viele weitere Formatierungsregeln zu kennen und umzusetzen.
Welche Formatierungen sollen noch aufgenommen werden
1. Tabstopps in RTB sind immer linksbündig. Benötige aber auch rechtsbündige Tabs
2. Der Abstand zwischen den Absätzen soll einstellbar sein
Das Anpassen der Texte inkl. der Formatierungen scheint lösbar zu sein (mit meinen Kenntnissen).
Aber wie ermittliche ich die Position im RTF-Text?
Wie stelle ich mir das vor beim Abstand zwischen Absätzen:
1. Stelle den Cursor in einen Absatz
2. Ermitteln des betroffenen Absatzes im RTF-Text (wie mach ich dies?)
3. Einfügen der Formatierung \sbN (z.b. \sb20) mit Hilfe von String-Manipulation im RTF-Text
Frage:
- Bin ich mit meiner Idee auf dem Holzweg?
- Kann man es einfacher machen?
- Soll man die Finger davon lassen?
- Wenn realisierbar, wie ermittele ich den betroffenen Absatz
- Wie macht ihr das?
Über rege Beteiligung würde ich mich sehr freuen
Vielen Dank
spatzimatzi | |
Re: RichTextBox, zusätzliche Eigenschaften | | | Autor: effeff | Datum: 22.11.16 16:14 |
| So im ersten Takt...
In der RTB kannst Du den selektierten Text abfragen - also das, was Du mit der Maus markiert hast. Diesen Teil ersetzt Du dann eben durch sich selber + Formatierungen...
EALA FREYA FRESENA | |
Re: RichTextBox, zusätzliche Eigenschaften | | | Autor: spatzimatzi | Datum: 22.11.16 16:32 |
| Hallo effeff,
das verstehe ich nicht.
Wenn ich den Zwischenraum zwischen 2 Absätzen verändern will, dann kann ich im oberen Absatz ein \saN (N > 0) für Spaces after oder aber im unteren Absatz ein \sbN (N > 0) für Spaces before setzen. Oder auch beide.
Dabei wird kein Text selektiert.
Was ich brauche ist ein SelStart, nur eben für den Rtf-Text. Damit kann ich dann das Absatzende (\par) finden und die Formatierung setzen.
Vielleicht habe ich Dich auch nur nicht verstanden. Kannst du deine Ausführungen etwas präzisieren.
Viele Grüße
spatzimatzi | |
Re: RichTextBox, zusätzliche Eigenschaften | | | Autor: Franki | Datum: 23.11.16 01:59 |
| Hallo,
warum möchtest du das Rad neu erfinden?
Es gibt ja Textverarbeitungen wie Sand am Meer, viele davon kann man auch aus seinen VB Programmen heraus ansprechen.
Natürlich kann man so etwas auch selbst programmieren, habe ich auch schon gemacht, aber dabei ging es um andere Dinge als die reine Textverarbeitung. Es ging damals um Umwandlung und Formatierung von Artikeltexten für einen Onlineshop wo dann als Resultet HTML Code heraus gekommen ist. Aber das ist ja ein Spezialfall, was ist dein Ziel warum du das brauchst?
Gruß
Frank | |
Re: RichTextBox, zusätzliche Eigenschaften | | | Autor: spatzimatzi | Datum: 23.11.16 11:20 |
| Hallo Manfred x, hallo Franki,
#Manfred x
Vielen dank für den Link. Habe mir die Seite angeschaut, kann aber nicht erkennen, wie ich diese einbauen und wie ich es nützen könnte.
Glaube weiterhin, dass, sofern ich die Position im Rtf-Text kenne, eine Veränderung der Formatierungsregeln relativ einfach zu handhaben ist. Zumal es sich um Formatierungen um eine Absatzformatierung handelt.
Was ich brauche:
- Gegenstück zu SelectionStart, nämlich bezogen auf den Rtf-Text
- In welchen Absatz befinde ich mich, bezogen auf den Rtf-Text. Die Anzahl würde genügen. Daraus könnte ich die Position ermitteln.
- In welchem Satz befinde ich mich, bezogen auf den Rtf-Text.
Werde auch versuchen, über SelectionStart bestimmte Textpassagen aus dem Absatz für die Suche im Rtf-Text zu bilden. Werden die Strings gefunden, dann bin ich hoffentlich im richtigen Absatz.
Wenn jemand bessere Möglichkeiten hat, nur her damit. Ich würde mich riesig freuen.
#Franki
Ich möchte keine Textverarbeitung schreiben. Es sollte nur WordPad nachgebildet werden. Und ein Rad neu erfinden möchte ich schon gar nicht!
Folgende Situation liegt vor.
In einer Anwendung habe ich mehrere Rtb-Controls. Da diese formatierten Text aufnehmen sollen, aber relativ klein in den Abmessungen sind, kann der Anwender über Doppelklick ein Editorfenster aufrufen mit dem Inhalt aus dem Rtb-Control.
Dieser Form habe ich dann noch ein Menü und eine Buttonleiste verpasst. Damit kann der Anwender einfach und komfortabel arbeiten. Wird das Fenster geschlossen und es liegen Änderungen vor, dann werden diese zurückgeschrieben.
Wenn es jedoch Editoren oder Textverarbeitungen gibt, die ich aufrufen und den Rtf-Text übergeben könnte, wäre dies natürlich sehr schön. Beim Schließen des Programmes müßte der Rtf-Text dann zurückgegeben werden, ohne irgendwelche Handlungen auszuführen.
Leider kenne ich kein Programm. Vielleicht kannst du mir Informationen geben!
Vielen Dank für die Informationen
spatzimatzi | |
Re: RichTextBox, zusätzliche Eigenschaften | | | Autor: Manfred X | Datum: 24.11.16 06:07 |
| Hallo!
Ich rate davon ab, RTF-Tags in das RTB-Control von Win.Forms einzubeziehen,
die dort nicht dokumentiert sind. Ob solche Tags beachtet, korrekt verarbeitet
und verwaltet werden, ist nicht sichergestellt.
Ich würde am Markt nach einem (kommerziellen ?) Control suchen, das die
benötigte Funktionalität verfügbar macht.
Die Position eines Textabschnitts (RTF) im RTB-Control kann gefunden werden,
wenn ein Abschnitt markiert, dort eine sonst nicht verwendete Kennfarbe
(SelectionColor) gesetzt und unmittelbar danach in der RTF-Eigenschaft
nach der Position dieses Tags gesucht wird (IndexOf) - danach ist es wieder
zu entfernen (Remove). | |
Re: RichTextBox, zusätzliche Eigenschaften | | | Autor: spatzimatzi | Datum: 24.11.16 14:13 |
| Hallo Manfred x,
das ist eine super Idee.
Und gleich ans Werk gemacht.
Wollte für die Kennung den Hintergrund mit SelectionBackColor auf die Farbe von RichTextBox.BackColor setzen, damit der Anwender das nicht sieht. Klappt prima.
Wird die Farbe gesetzt dann wird als Formatierung \highlightN und \highlight0 gesetzt. N ist dabei die Farbe, die in der Farbentabelle \colortbl hinterlegt ist. Wunderbar. Über die Farbtabelle suche ich nach der Farbe, nehme die Nummer und suche danach nach dem entsprechenden Eintrag. Schon bin ich im Absatz und kann hier jede beliebige Formatierung vornehmen. Natürlich nur die, die auch akzeptiert werden
Nach der Formatierung muss ich dann die Hilfs-Formatierung wieder löschen. Leider kann man SelectionBackColor nicht so ohne weiteres löschen.
In WordPad kann man für die Texthervorhebungsfarbe "Keine" angeben. Dann wird die Formatierung komplett entfernt.
Mit = Color.Empty schon probiert. Klappt nicht
Gibt es einen Trick, das die Box wie in WordPad reagiert??
Viele Grüße
spatzimatzi | |
Re: RichTextBox, zusätzliche Eigenschaften | | | Autor: Manfred X | Datum: 25.11.16 06:58 |
| Ungeprüft **** Ungeprüft **** Ungeprüft
1. RTF-Eigenschaft der RTB in einer String-Variable speichern
2. In RTB einen Abschnitt markieren (Selection)
3. Kennfarbe eintragen (SelectionColor)
4. Position des Kennfarb-Tags ermitteln (IndexOf)
5. Position des selektierten Abschnitts innerhalb des gespeicherten
Strings (1) unter Verwendung der Information aus (5) ermitteln
6. Gewünschte RTF-Tags in String (1) einbauen
7. Den modifizierten String (1) auf die RTF-Eigenschaft der
RTB zuweisen
Ungeprüft **** Ungeprüft **** Ungeprüft | |
Re: RichTextBox, zusätzliche Eigenschaften | | | Autor: spatzimatzi | Datum: 08.12.16 16:43 |
| Hallo,
nach längerer Zeit konnte ich mich wieder um die Formatierung kümmern.
Die Formatierungen klappen einwandfrei.
In der Regel ist es so, dass als Werte TWIPS entgegengenommen werden.
Das ist für den Anwender natürlich etwas unbefriedigend.
Jetzt dachte ich mir, man könnte die TWIPS in Pixel bzw. in Millimeter umrechnen.
Dazu habe ich auch im Internet gestöbert aber nich's passendes gefunden.
Es ist doch richtig, dass die Umrechnungen bei unterschiedlichen Bildschirmauflösungen auch unterschiedlich durchgeführt werden müssen.
Was benötige ich:
Den Rechenweg zum Umrechnen von TWIPS in Pixel oder von TWIPS in Millimeter
Freue mich schon auf die Antworten
Viele Grüße
spatzimatzi | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|