RichTextBox scrollt unaufgefordert

19/04/2012 - 07:57 von W. Wolf | Report spam
Guten Morgen,

bevor ich hier in die total falsche Richtung abdrifte, frage ich vorab
mal. Mein Code fàrbt Text ein, hier reduziert auf das nötigste

Private Sub txtCode_Change()
Dim Pos As Long
Pos = txtCode.SelStart
txtCode.TextRTF = myParser.Parse(txtCode.Text)
txtCode.SelStart = Pos
End sub

funktioniert so weit gut, hat aber einen Schönheitsfehler:
Bei langen Text kommt der vertikale Scrollbalken, das ist ok. Allerdings
springt die Zeile in der die Eingabe stattfindet immer an den unteren
Rand der RtfBox. Die Box scrollt also selbst, so dass die Zeile mit
Eingabecursor zur unterst sichtbaren Zeile in der Box wird.
Wie kann ich das verhindern? Danke vorab für Vorschlàge.

Wenn jetzt keiner eine Idee hat, dann werde ich versuchen herauszufinden
welche Zeile aktuell die unterste Zeile ist und den Text nach .Parse
wieder dort hin zu scrollen. Ist das der richtige Ansatz? Umstàndlich?
Geht es auch besser?

Schönen Gruß
W. Wolf
 

Lesen sie die antworten

#1 G.Wietzorek
19/04/2012 - 09:09 | Warnen spam
Am 19.04.2012 07:57, schrieb W. Wolf:
Guten Morgen,

Private Sub txtCode_Change()
Dim Pos As Long
Pos = txtCode.SelStart
txtCode.TextRTF = myParser.Parse(txtCode.Text)
txtCode.SelStart = Pos
End sub

funktioniert so weit gut, hat aber einen Schönheitsfehler:
Bei langen Text kommt der vertikale Scrollbalken, das ist ok. Allerdings
springt die Zeile in der die Eingabe stattfindet immer an den unteren
Rand der RtfBox.



Public Property Get toprow(c As RichTextBox) As Long
toprow = SendMessage(c.hwnd, EM_GETFIRSTVISIBLELINE, 0&, (0&))
End Property
Public Property Let toprow(c As RichTextBox, ByVal newrow&)
Dim m_toprow&
m_toprow = toprow(c)
If newrow <> m_toprow Then
Call SendMessage(c.hwnd, EM_LINESCROLL, 0&, ByVal (CLng(newrow -
m_toprow)))
End If
End Property

damit sollte es funktionieren...

Gert


"Probleme kann man niemals mit derselben Denkweise lösen, durch die sie
entstanden sind."
Albert Einstein

Ähnliche fragen