none
Einfügemarkendarstellung in RTF-Box ändern RRS feed

  • Frage

  • Ich habe ein RTF-Feld. Wenn ich jetzt nun die Einf.-Taste drücke dann soll sich auch die Einfügemarke ändern (breiter werden).
    Nach langem Suchen habe ich im Internet zwar ein Beispiel gefunden. Dieses war für VB6 geschrieben. Ich habe dieses dann mal testhalber in mein Projekt eingebaut.

    Nur funktioniert das nicht so wie erwartet. Denn die Einfügemarke verändert zwar ihr Aussehen (wird ein sehr kurzer Strich anstatt wie erwartet breiter zu werden). Nachdem man dann ein Zeichen eingegeben hat sieht die Einfügemarke wieder ganz normal aus. Das Aussehen sollte aber solange bestehen bleiben bis ich wieder die Einf.-Taste drücke.
    Wie stelle ich das denn nun an damit auch in VB2008 eine breite Einfügemarke erscheint?

    Im Folgenden mal den Code den ich gefunden und eingebaut habe:

     

    Code Snippet

    Private Declare Function CreateCaret Lib "User32" (ByVal hWnd As Long, _

    ByVal hBitmap As Long, ByVal nWidth As Long, _

    ByVal nHeight As Long) As Long

     

    Private Declare Function ShowCaret Lib "User32" (ByVal hWnd As Long) As Long

     

    Private Shared Sub SetNewCaret(hWnd As Long, ByVal nWidth As Long, ByVal nHeight As Long)

    CreateCaret(hWnd, 0, nWidth, nHeight)

    ShowCaret(hWnd)

    End Sub

     

    Private Shared Sub EinfStat()

    If CBool(Edit(A).Tag) Then

    SetNewCaret(Edit(A).Handle, 8, 13)

    Desktop.tspInsMod.Text = "šB"

    Else

    SetNewCaret(Edit(A).Handle, 1, 13)

    Desktop.tspInsMod.Text = "EINFG"

    End If

     

    End Sub

     

     

    Montag, 18. August 2008 14:07

Alle Antworten

  • Ich habe mal das Open Source Projekt "Sharp Develop" unter die Lupe genommen. Da wurde ich dann ebenfalls fündig wie man den Cursor breiter macht. Ich habe den Code an mein Projekt angepasst und jetzt funktionierts.
    Eine Frage dazu hätte ich noch. Wenn ich die Einfügemarke verbreitere dann bleibt die Darstellung nur solange erhalten bis ein Zeichen eingetippt wird,. Dann wird die Einfügemarke wieder normal dargestellt. Ich muß also jedesmal per Ereignis die spezielle Darstellung wieder anschubsen.

    Gibt es eine Möglichkeit die Einfügemarke solange breit zu lassen bis etwas anderes definiere? Denn so ist das Ganze doch etwas mühsam.

     

    Dienstag, 19. August 2008 06:19