vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

Suche Visual-Basic Code
Re: Zeilenmarkierung 
Autor: Tolwyn
Datum: 15.11.01 11:04

Hi,

meinst Du eine „echte“ Markierung oder eine optische Hervorhebung?

Für das letztere ist hier eine Lösung die zumindest funktioniert. Die Funktionen sorgen dafür, das immer die vorletzte Zeile rot markiert wird.

„StoreLine“ muß aufgerufen werden, bevor der Cursor eine Zeile verläßt. Diese Funktion merkt sich dann die verlassende Zeile. „MarkLine“ muß aufgerufen werden wenn der Cursor in der neuen Zeile angekommen ist und markiert die von „StoreLine“ gemerkte Zeile rot.

Option Explicit
 
Dim lLastStart      As Long
Dim lLastLength     As Long
Dim lCurrLineStart  As Long
Dim lTemp           As Long
 
Private Sub RichTextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
  Select Case KeyCode
    Case vbKeyUp, vbKeyDown, vbKeyLeft, vbKeyRight
      StoreLine
    Case Else
  End Select
End Sub
Private Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer)
  MarkLine
End Sub
 
Private Sub RichTextBox1_MouseDown(Button As Integer, _
  Shift As Integer, X As Single, y As Single)
  StoreLine
End Sub
Private Sub RichTextBox1_MouseUp(Button As Integer, _
  Shift As Integer, X As Single, y As Single)
  MarkLine
End Sub
 
Private Sub StoreLine()
  ' Die letzte Zeile merken
  With RichTextBox1
    If .SelStart > 0 Then
      lLastStart = InStrRev(.Text, vbCrLf, .SelStart, vbTextCompare)
      lTemp = InStr(.SelStart, .Text, vbCrLf, vbTextCompare)
    Else
      lLastStart = 0
      lTemp = InStr(.SelStart + 1, .Text, vbCrLf, vbTextCompare)
    End If
    If lTemp = 0 Then lTemp = Len(.Text) + 1
    lLastLength = lTemp - lLastStart
  End With
End Sub
 
Private Sub MarkLine()
  ' Wenn sich die Zeile geändert hat, die letzte Zeile markieren
  Dim lCurrStart      As Long
  Dim lCurrLength     As Long
 
  lTemp = 0
  With RichTextBox1
    If .SelStart > 0 Then lTemp = InStrRev(.Text, vbCrLf, .SelStart, _
      vbTextCompare)
    If lCurrLineStart = lTemp Then
      ' dann wurde nur die Zeile nochmals selektiert
      Exit Sub
    End If
    ' aktuelle Selektion sichern
    lCurrStart = .SelStart
    lCurrLength = .SelLength
    lCurrLineStart = lTemp
    ' den gesamten Text schwarz einfärben
    .SelStart = 0
    .SelLength = Len(.Text)
    .SelColor = vbBlack
    ' letzte selektierte Zeile selektieren und Farbe ändern
    .SelStart = lLastStart
    .SelLength = lLastLength
    .SelColor = vbRed
    ' aktuelle Selektion zurücksetzten
    .SelStart = lCurrStart
    .SelLength = lCurrLength
  End With
End Sub
Gruß
Tolwyn
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zeilenmarkierung90Mark12.11.01 10:08
Re: Zeilenmarkierung56Tolwyn15.11.01 11:04
Cool 401ModeratorDieter15.11.01 13:22
Re: Cool 52Tolwyn15.11.01 15:46
Danke Tolwyn46Mark20.11.01 11:46

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-2025 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