vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · TextBox & RichTextBox   |   VB-Versionen: VB4, VB5, VB609.09.01
Komfortable Suchfunktion für Textfelder

Eine universelle Suchfunktion für Textfelder unter Berücksichtigung verschiedener Suchoptionen, inkl. Weitersuchen.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  20.960 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Das nachfolgende Beispiel zeigt, wie sich eine Suchfunktion für ein mehrzeiliges Textfeld realisieren lässt. Die Suche kann optional über den gesamten Textinhalt oder nur innerhalb des markierten Textes erfolgen. Desweiteren ist auch eine Weitersuch-Funktion vorhanden. Als Einstellungen kann zusätzlich festgelegt werden, ob die Groß-/Kleinschreibung beachtet oder ignoriert werden soll.

Um das Beispiel testen zu können, benötigen Sie eine Form mit folgenden Steuerelementen:

  1. TextBox txtText (MultiLine = True)
  2. TextBox txtSuch
  3. zwei OptionButtons, Option1(0) (Caption = "gesamten Text durchsuchen") und Option1(1) (Suche innerhalb des markierten Bereichs)
  4. CheckBox Check1 (Caption = "Groß/Kleinschreibung beachten")
  5. CommandButton cmdSuchen (Enabled = False)
  6. CommandButton cmdWeitersuchen (Enabled = False)

Und hier der Code:

' Wurde überhaupt ein Suchbegriff eingegeben?
Private Sub txtSuch_Change()
  cmdSuchen.Enabled = (txtSuch.Text <> "")
  cmdWeitersuchen.Enabled = (txtSuch.Text <> "" And _
    Option1(0) = True)
End Sub
 
' Einstellungen
Private Sub Option1_Click(Index As Integer)
  cmdWeitersuchen.Enabled = (txtSuch.Text <> "" And _
    Option1(0) = True)
End Sub
 
' Suchen
Private Sub cmdSuchen_Click()
  Dim lPos As Long
  Dim lBegPos As Long
 
  If Option1(0) Then
    ' Gesamten Text durchsuchen
    lBegPos = 0
    lPos = TextSearch(txtText.Text, txtSuch.Text, _
      (Check1.Value <> 0))
  Else
    ' Nur markierten Bereich durchsuchen
    lBegPos = txtText.SelStart
    lPos = TextSearch(txtText.SelText, txtSuch.Text, _
      (Check1.Value <> 0))
  End If
 
  If lPos > 0 Then
    With txtText
      .SelStart = lBegPos + lPos - 1
      .SelLength = Len(txtSuch.Text)
      .SetFocus
    End With
  End If
 
  If lPos < 1 Then _
    MsgBox "Suchbegriff nicht gefunden!"
End Sub
 
' Weitersuchen
Private Sub cmdWeitersuchen_Click()
  Dim lPos As Long
  Dim lBegPos As Long
 
  ' Im Gesamten Text weitersuchen
  lBegPos = txtText.SelStart + 2
  lPos = TextSearch(txtText.Text, txtSuch.Text, _
    (Check1.Value <> 0), lBegPos)
 
  If lPos > 0 Then
    With txtText
      .SelStart = lBegPos + lPos - 2
      .SelLength = Len(txtSuch.Text)
      .SetFocus
    End With
  End If
 
  If lPos < 1 Then _
    MsgBox "Suchbegriff nicht gefunden!"
End Sub

Und hier die eigentliche Suchfunktion:
Über den Paramater bCase legen Sie fest, ob die Groß-/Kleinschreibung berücksichtigt werden soll (True) oder nicht (False). Desweiteren kann über den Parameter lBegPos die Start-Position für die Suche festgelegt werden.

' Textsuche
Public Function TextSearch(ByVal strText As String, _
  ByVal strSuch As String, _
  Optional ByVal bCase As Boolean = False, _
  Optional ByVal lBegPos As Long = 1) As Long
 
  Dim lPos As Long
 
  If lPos < 1 Then lPos = 1
  If bCase Then
    ' Groß-/Kleinschreibung beachten!
    lPos = InStr(Mid$(strText, lBegPos), strSuch)
  Else
    ' Groß-/Kleinschreibung ignorieren!
    lPos = InStr(LCase$(Mid$(strText, lBegPos)), _
      LCase$(strSuch))
  End If
  TextSearch = lPos
End Function

Dieser Tipp wurde bereits 20.960 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

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