vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 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

Visual-Basic Einsteiger
Re: Funktionen aus RTF in Combo 
Autor: vbtricks
Datum: 27.02.05 15:51

Hallo,

die Lösung war schon heute um 12.00 fertig, aber ich hatte zwischenzeitlich was anderes zu tun. Also hier ist meine Lösung:
' Hilfsprozedur für ListSubs, die einmal mit "Sub" und einmal mit "Function"
' aufgerufen wird
Private Sub ListSubsHelper(ByRef vTextBox As RichTextBox, _
    ByRef vCombo As ComboBox, ByVal sKeyWord As String)
 
    On Error Resume Next
    Dim lPos As Long, lFPos As Long, sFuncName As String
    ' suche erstes Auftreten von sKeyWord
    lPos = InStr(1, vTextBox.Text, sKeyWord, vbTextCompare)
    While lPos > 0
        If InStr(lPos, vTextBox.Text, "(") > 0 Then
            ' nach sKeyWord tritt ein "(" auf (als Begrenzer für Funktionsnamen)
            lFPos = lPos + Len(sKeyWord) + 1
            sFuncName = Trim(Mid(vTextBox.Text, lFPos, _
                InStr(lPos, vTextBox.Text, "(") - lFPos))
            If InStr(1, sFuncName, " ") > 0 Then
                ' kein gültiger Funktionsname
            Else
                If InStr(1, sFuncName, vbNewLine) > 0 Then
                    ' kein gültiger Funktionsname
                Else
                    vCombo.AddItem sFuncName
                End If
            End If
        End If
        ' nächstes Auftreten von sKeyWord suchen
        lPos = InStr(lPos + 1, vTextBox.Text, sKeyWord, vbTextCompare)
    Wend
End Sub
 
' listet alle Funktionen und Prozeduren auf
Private Sub ListSubs(ByRef vTextBox As RichTextBox, ByRef vCombo As ComboBox)
    vCombo.Clear
    ' alle Funktionen auflisten
    ListSubsHelper vTextBox, vCombo, "function"
    ' alle Subs auflisten
    ListSubsHelper vTextBox, vCombo, "sub"
End Sub
 
' prüft, ob in der Zeile vor dem Funktionsnamen "Sub" oder "Function" steht
Private Function JumpToSubHelper(ByRef vTextBox As RichTextBox, ByVal lPos As _
  Long, ByVal sKeyWord As String) As Boolean
    On Error Resume Next
    Dim lSPos As Long, sTemp As String
    lSPos = InStrRev(vTextBox.Text, sKeyWord, lPos, vbTextCompare)
    If lSPos > 0 Then
        sTemp = Mid(vTextBox.Text, lSPos, lPos - lSPos)
        If InStr(1, sTemp, vbNewLine) > 0 Then
            ' ist nicht die Funktionsdeklaration
        Else
            ' ist die funktionsdeklaration
            JumpToSubHelper = True
        End If
    End If
End Function
 
' springt zu der gewünschten Funktion/Sub
Private Sub JumpToSub(ByRef vTextBox As RichTextBox, ByVal sFuncName As String)
    On Error Resume Next
    Dim lPos As Long, bIsDeclaration As Boolean, lNPos As Long
    ' erstes Auftreten des Funktionsnamens suchen suchen
    lPos = InStr(1, vTextBox.Text, sFuncName, vbTextCompare)
    While lPos > 0
        ' vor dem Funktionsnamen muss entweder "Sub" oder "Function" stehen
        If JumpToSubHelper(vTextBox, lPos, "sub") Then
            bIsDeclaration = True
        Else
            If JumpToSubHelper(vTextBox, lPos, "function") Then
                bIsDeclaration = True
            End If
        End If
        If bIsDeclaration Then
            ' Suche Anfang der Zeile
            lNPos = InStrRev(vTextBox.Text, vbNewLine, lPos)
            lPos = IIf(lNPos > 0, lNPos + 2, 1)
            vTextBox.SelStart = lPos - 1
            lPos = Len(vTextBox.Text)
        End If
        ' nächstes Auftreten vom Funktionsnamen suchen
        lPos = InStr(lPos + 1, vTextBox.Text, sFuncName, vbTextCompare)
    Wend
End Sub
wichtig sind die beiden Funktionen ListSubs und JumpToSub:
1. ListSubs listet alle Funktionen und Prozeduren in einer RichTextBox auf. Aufruf:
ListSubs RichText1, Combo1
2. JumpToSubs springt zu einer Prozedur in der RichTextBox. Aufruf:
JumpToSub RichText1, "Funktionsname"
Diese würde ich aus dem Combo1_Click() Ereignis wie folgt aufrufen:
JumpToSub RichTextBox1, Combo1.Text
Ich hoffe, das hilft dir weiter,

Stefan

P.S. Bei Fragen zum Source einfach hier rein posten.

Web: http://www.vbtricks.de.vu/

VBTricks.de.vu. Meine Webseite zu VB und anderen Programmiersprachen. Verschiedene fortgeschrittene OCXe und komplette Projekte sind im Sourcecode verf?gbar.

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Funktionen aus RTF in Combo833noCeulB?!!6$$26.02.05 18:39
Re: Funktionen aus RTF in Combo391noCeulB?!!6$$27.02.05 12:01
Re: Funktionen aus RTF in Combo430Master27.02.05 13:36
Re: Funktionen aus RTF in Combo482vbtricks27.02.05 15:51
Re: Funktionen aus RTF in Combo461noCeulB?!!6$$01.03.05 13:37

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