vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
RichTextBox, Formatierungsproblem bei Font-Zuweisung 
Autor: spatzimatzi
Datum: 18.02.15 17:03

Hallo,
habe auf den unterschiedlichsten Forms RichTextBoxen.
Damit sie alle die gleiche Formatierung aufweisen, werden die Objekte
zentral angepasst. Die einzelnen Objekte werden beim Aufruf der Form
gelesen und angepasst. Das sieht so aus:

If TypeName(ctrl) = "RichTextBox" Then
  Dim rtb As RichTextBox = DirectCast(ctrl, RichTextBox)
  rtb.BorderStyle = BorderStyle.FixedSingle
  rtb.ReadOnly = bolNoChange
  rtb.AutoWordSelection = False
  rtb.WordWrap = True
End If
Die RichTextBoxen funktionieren auch richtig. Das Formatieren klappt.
Da die Fonts in den Boxen unterschiedlich waren, wollte ich diese nachträglich anpassen mit:

 
  rtb.Font = New Font("Arial", 10, FontStyle.Regular)
Jetzt geschieht Merkwürdiges:
Alte formatierte Texte werden nicht mehr richtig aufbereitet.
Dabei steht der Text in der Datenbank incl. Steuerzeichen

Neu verfasste Text lassen sich formatieren, aber nicht wieder anzeigen.
In der Datenbank ist jedoch alles in Ordnung, incl. Steuerzeichen

Aber Achtung: Dies geschieht nicht bei allen RichTextBoxen!!

Nehme ich den Font raus, dann funktioniert es wieder richtig!

Nun meine Fragen:
1. Ist meine Font-Zuweisung falsch?
2. Kann man nachträglich keinen Font zuweisen?

Ein 2. Thema:
Wenn ich Text formatieren möchte, dann selektiere ich ihn und rufe den FontDialog auf.
Leider stimmen die Dialog-Parameter nie mit dem selektierten Font überein.

Wie muss ich hier vorgehen?


Viele Grüße
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: RichTextBox, Formatierungsproblem bei Font-Zuweisung 
Autor: spatzimatzi
Datum: 18.02.15 19:38

Hallo,
das Thema mit dem FontDialog hat sich geklärt.
Habe dem FontDialog den aktuellen Font übergeben können.

Die RichTextBox mit dem zugewiesenen Font ist aber noch offen!

Gruß
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: RichTextBox, Formatierungsproblem bei Font-Zuweisung 
Autor: Manfred X
Datum: 18.02.15 20:44

Hallo!

Nachträglich anpassen?
Willst Du die DB-Einträge aktualisieren oder den abgefragten Text
in einem bestimmten Font anzeigen?

Eigentlich sollte die Zuweisung auf die Font-Eigenschaft des Control funktionieren.

[I]Das RichTextBox-Steuerelement stellt eine Anzahl von Eigenschaften bereit,
mit denen Sie einem beliebigen Textteil im Steuerelement eine Formatierung zuweisen können.
Zum Ändern der Textformatierung muss der Text zunächst markiert werden.
Nur markiertem Text kann eine Zeichen- und Absatzformatierung zugewiesen werden.
Wenn für einen markierten Textabschnitt eine Einstellung festgelegt wurde,
wird der gesamte nach der Auswahl eingegebene Text mit denselben Einstellungen formatiert,
bis diese geändert werden oder ein anderer Abschnitt des Dokuments des Steuerelements ausgewählt wird.
Mit der SelectionFont-Eigenschaft können Sie Text fett oder kursiv formatieren.
Mit dieser Eigenschaft können Sie auch die Größe und die Schriftart des Texts ändern. [/I](MSDN, RTF-Klasse)

Selektiere den gesamten bereits enthaltenen Text und weise den gewünschte Font
der SelectionFont-Eigenschaft zu.

Sei "rtf" ein Richtextbox-Control ....
    With rtf       
       .SelectionStart = 0
       .SelectionLength = .Text.Length
       .SelectionFont = New Font("Arial", 15, FontStyle.Bold)
       .SelectionLength = 0
   End With
Übrigens .....
  If TypeOf rtf Is RichTextBox Then
     '.....
  End If


Beitrag wurde zuletzt am 18.02.15 um 21:09:08 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: RichTextBox, Formatierungsproblem bei Font-Zuweisung 
Autor: spatzimatzi
Datum: 19.02.15 11:23

Hallo Manfred X,
habe das Gefühl, das ich meinen Wunsch nicht richtig dargestellt habe, oder aber nicht richtig verstanden habe.

Ich versuche die Situation zu erklären.
Bei der Entwicklung der RichTextBoxen (rtb) habe ich zunächst nicht darauf geachtet, das die Eigenschaften in den rtb's identisch sind. Das führt heute dazu, das der Font beim Öffnen der rtb, einmal "Arial, 10", beim anderen "Sans Serif, 8" ist.
Da dies jeweils der Standard-Font ist, müssen Kolleginnen und Kollegen den Text jeweils auf die Standardschrift "Arial, 10" über FontDialog umsetzen. Das nervt!

Mein Ziel ist es nicht, denn schon in der DB abgelegten Text nachträglich zu ändern, sondern quasi den Default-Font zu ändern. Deshalb der zusätzliche Parameter.

Wenn ich nun die rtb's direkt in den Forms über Font einen anderen Font vorgebe, so klappt dies wunderbar!
Alter formatierter Text bleibt wie er ist. Nehme ich zusätzlichen Text auf, so wird dieser in dem Default-Font dargestellt. Schreibe ich eine neue Notiz, so kommt hier auch der Font zum Tragen.
Alles wunderbar.

Fragen:
Warum kann ich den händisch eingestellten Font nicht per Script einstellen?
Ist die Zuweisung des Font falsch? Im Designer sieht es so aus:
    Me.rtbNotiz.Font = New System.Drawing.Font("Arial", 9.75!, _
      System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, _
      CType(0, Byte))
Gibt es Informationen, die ich noch wissen sollte?

Viele Grüße
spatzimatzi


Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: RichTextBox, Formatierungsproblem bei Font-Zuweisung 
Autor: Manfred X
Datum: 19.02.15 12:05

Hallo!

Leider verstehe ich tatsächlich nicht.

[I]Bei der Entwicklung der RichTextBoxen (rtb) habe ich zunächst nicht darauf geachtet,
daß die Eigenschaften in den rtb's identisch sind.
Das führt heute dazu, das der Font beim Öffnen der rtb, einmal "Arial, 10", beim anderen "Sans Serif, 8" ist.[/I]

Welcher Font variiert? Abgeleitete Controls?
Eine Klasse kann nur einen Default-Font haben.
Was bedeutet "händisch eingestellt"? Im Designer? Durch Benutzer-Dialog?
Was bedeutet "direkt vorgeben"?

Vage Vermutung: Du mußt den Selection-Font festlegen (siehe obiges MSDN-Zitat),
nachdem "SelectionStart" auf "Text.Length" gesetzt worden ist.
Dieser Font wirkt sich auf den neu angehängten Text aus.
Text, der in bereits vorhandene und formatierte Abschnitte eingegeben wird,
enthält die dort festgelegten Attribute.

Die Änderung der Font-Eigenschaft einer Richtextbox
wirkt sich sich auf den gesamten bereits darin enthaltenen Text aus.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: RichTextBox, Formatierungsproblem bei Font-Zuweisung 
Autor: spatzimatzi
Datum: 19.02.15 14:17

Hallo Manferd X,
habe schon mehrfach in diesem Forum darauf hingewiesen, dass ich die Entwicklung eines Systems aufs Auge gedrückt bekommen habe. Zunächst war ich ein blutiger Änfänger (jetzt nur noch Änfänger) und habe entsprechend viele Fehler gemacht.

Entsprechend wurde die Forms gestaltet.
Wurde bei der Entwicklung eine RichTextBox benötigt, so wurde diese in die GUI gezogen und die Eigenschaften (händisch, von Hand im Designer) gesetzt. Und da mir viele Eigenschaften unbekannt waren, wurde fleißig an den Eigenschaften herumgewurschtelt.

Entsprechend lief das Spiel bei der nächsten Form. Keine einheitlichen Einstellungen.
Genau dieses Durcheinander besteht selbstverständlich auch in den TextBoxen, ComboBoxen, DataGridviews, ...
Ein richtiges Sammelsurium von Fonts und Farben.
Nun hätte ich die einzelnen Controls vereinheitlichen können. Händisch!. Aufrufen des Controls in der GUI bzw. Designer, dann ändern der Eigenschaften. Control für Control.
Das war mir sogar zu blöd und so entschloss ich mich, eine zentrale Stelle zu schaffen, in der alle Controls einlaufen um dort einheitlich Eigenschaften entgegen zu nehmen.
Und das klappt mittlerweile wunderbar. An dieser Stelle vielen Dank für den Hinweis mit TypeOf

Nur eben nicht beim Font in der RichTextBox.

Mein Wunsch:
Setzen des Font's in der zentralen Stelle. So, als würde ich dies im Designer machen.
Erledige ich dies im Designer, dann ändert sich keine Formatierung, auch nicht bei alten Informationen.
Ab sofort ist der Font der Default-Font. Zusätzlicher Text oder auch neue Informationen werden genau in diesem Font dargestellt.
Es funktioniert einwandfrei. Ausgiebig getestet! Aber eben nur über den Designer.

Jetzt könnte ich die Font-Zuweisung bei meinen 7 RichTextBoxen im Designer erledigen und mein Problem wäre erledigt. Doch was ist, wenn mein Chef in einem Jahr eine andere Standardschrift möchte. Wieder in den Designer?
Wäre es hier nicht geschickter, die Zuweisung der Eigenschaft von der Zentralstelle erledigen zu lassen.

Und nochmals:
Ich möchte die vorliegenden Informationen nicht ändern!!. Alle Formatierungen bleiben wie sie sind.
Nur zukünftige Informationen werden im neuen Font geschrieben.

Wird eine RichTextBox-Information erweitert oder eine neue RichTextBox erstellt, dann soll, und nur dann, dieser neue Font genommen werden. Es ist der Default-Font, wie er im Designer steht

Hoffe, mein Anliegen wurde verstanden.

Viele Grüße
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: RichTextBox, Formatierungsproblem bei Font-Zuweisung 
Autor: effeff
Datum: 19.02.15 15:06

Warum schreibst Du die Formatierung überhaupt in die Datenbank, wenn der Text doch reichen würde und die Formatierung letzlich eh von der RTBox kommt?

Bereits in seinem ersten Posting hat ManfredX Dir geschrieben, wie Du durch alle RichtTextBoxen iterieren und die Schriftart setzen kannst...

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: RichTextBox, Formatierungsproblem bei Font-Zuweisung 
Autor: Manfred X
Datum: 19.02.15 15:25

Beim Umgang mit "Rich Texten" ist deren Eigenart zu berücksichtigen.
Sie kombinieren Texte mit Attributen, die die Teile des Textes umklammern,
auf die sie sich beziehen. Dabei gibt es Klammerebenen und entsprechende
Geltungs-Hierarchien.
Es gibt keine "Standardattribute", sondern nur Attribute,
die den gesamten Text umklammern - und deshalb immer gelten, wenn nichts
anderes auf einer tieferen Ebene für einen Text-Abschnitt festgelegt worden ist.
Die Zuweisung von Werten auf RTF-Controls-Eigenschaften führt dazu,
daß Attribute in den (selektierten) Text eingetragen bzw. überschrieben
(= entfernt) werden.
Du mußt Dir also klar machen, wo welche Attribute hingehören.
(Was genau in Deinem Programm geschieht, hängt von den Attributen ab, die
aus der Datenbank gelesen worden sind. Sie entscheiden auch darüber,
ob RTF-Eigenschaften wie "Font" als "Klammer" für den Text verwendet
oder ignoriert werden.)

Die Zuweisung eines Attributes für einen Textabschnitt, führt dazu,
daß innerhalb dieses Abschnitts das entsprechende Attribut - falls
bereits vorhanden - entfernt wird. Dadurch wird die neue Attribut-Festlegung
für den Abschnitt gültig.

Beitrag wurde zuletzt am 19.02.15 um 15:37:32 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: RichTextBox, Formatierungsproblem bei Font-Zuweisung 
Autor: Kuno60
Datum: 20.02.15 04:30

Hallo spatzimatzi,

Zitat:

Nun meine Fragen:
1. Ist meine Font-Zuweisung falsch?
2. Kann man nachträglich keinen Font zuweisen?

Wenn du den Font der Richtextbox änderst, nachdem der RTF-Text zugewiesen wurde, so verliert der gesamte Text seine Formatierung.
Du musst also vorher den Font ändern, bevor du der Richtextbox den Text zuweist (bzw. vor der Datenbindung).
Me.RichTextBox1.Font = New Font("Arial", 8)
Me.RichTextBox1.Rtf = My.Settings.MerkeRTF
Damit nachfolgend geschriebener Text auch den Standard-Font übernimmt, musst du nach der Textzuweisung noch dies einfügen:
Me.RichTextBox1.SelectionStart = Me.RichTextBox1.TextLength
Me.RichTextBox1.SelectionFont = Me.RichTextBox1.Font
Zitat:

Ein 2. Thema:
Wenn ich Text formatieren möchte, dann selektiere ich ihn und
rufe den FontDialog auf.
Leider stimmen die Dialog-Parameter nie mit dem selektierten
Font überein.

Das geht so:
Me.FontDialog1.Font = Me.RichTextBox1.SelectionFont
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: RichTextBox, Formatierungsproblem bei Font-Zuweisung 
Autor: spatzimatzi
Datum: 20.02.15 13:11

Hallo,
das Problem ist gelöst!

Hatte geschrieben, dass das Problem nicht auftritt, wenn ich nachträglich im Designer den Font setze. Darüber habe ich mir Gedanken gemacht.

Nach Durchsicht meines Programmes habe ich festgestellt, das im Load-Ereignis zunächst der Datensatz von der Datenbank gelesen wurde.
Danach kam die Bindung und dann erst die zentrale Anpassung aller Objekte in der Form.
Und genau in dieser Reihenfolge liegt der Fehler.
Nachdem ich das Binding ans Ende des Programmablaufes gesetzt hatte, lief es einwandfrei!!

Wird jetzt ein formatierter Text aufgerufen, so bleibt die Formatierung bestehen. Wird der Text am Ende erweitert, so nimmt er die letzte Formatierung an. Gleiches Verhalten, wenn zusätzlicher Text eingefügt wird.

Wird ein neuer Record geschrieben, so nimmt der neu zu erfassende Text die Eigenschaften des zugewiesenen Font's aus der Zentralstelle an! Topp. Genau wie geplant.

Fazit: Erst die Bindung, wenn die Eigenschaften schon gesetzt sind.

Viele Grüße
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel