Avatar billede jensen363 Forsker
12. februar 2021 - 14:41 Der er 1 kommentar og
2 løsninger

Søgefunktion som suppplement til eksisterende TreeView control

Har genbrugt en tidligere database hvori jeg har indbygget en TreeView. Jeg har tidligere været ret så begejstret for denne metode til at navigere rundt i de forskellige data, - men kan godt se nogle begrænsninger når der pludselig er mange 'noder id'  at holde styr på.

Jeg har derfor behov for en alternativ/supplerende metode uden at ødelægge hele mit eksisterende setup, - jeg tænker bruger aktiverer en PopUp box hvor der indtastes den 'node id' der ønskes arbejdet med, hvor efter den pågældende række findes når PopUp lukkes igen.

Nogen der har noget tilsvarende / nogen der kan hjælpe ????
Avatar billede zuschlag Juniormester
12. februar 2021 - 15:41 #1
Hej
Måske kan dette bruges
Det virker i min treewiev
svar = txtsøg '''.Text

svar = InputBox("hvad", "Navn...")
  If IsNull(svar) Or svar = "" Then Exit Sub
  For intindex = 1 To a ''''tree.Nodes.Count
  If InStr(1, tree.Nodes(intindex).Text, svar) > 0 Then
  tree.Nodes(intindex).Selected = True

    tree.Nodes(intindex).EnsureVisible

VH Anders
Avatar billede terry Ekspert
12. februar 2021 - 16:35 #2
years since I last used the treeview control so needed to brush-up a bit.

Found a simple example which could be of interest.

Add a textbox(txtSearchFor)  to the form containing the treeview control, then when you enter text into the field the code finds and highlights those found

Private Sub txtSearchFor_Change()
   
    Dim tv As TreeView
    Dim nodNode As Node
    Dim nodFirstFind As Node
   
    'Point to the tree
    Set tv = Me.tvTreeView.Object
   
    'Search for the text and mark each find
    If Len(Me.txtSearchFor.Text & "") > 0 Then
        For Each nodNode In tv.Nodes
            If InStr(1, nodNode.Text, Me.txtSearchFor.Text, vbTextCompare) > 0 Then
                nodNode.Expanded = True
                nodNode.ForeColor = vbGreen
                If nodFirstFind Is Nothing Then
                    Set nodFirstFind = nodNode
                End If
            Else
                nodNode.Expanded = False
                nodNode.ForeColor = vbBlack
            End If
        Next nodNode
    Else
        For Each nodNode In tv.Nodes
            nodNode.ForeColor = vbBlack
        Next
        CollapseNodes tv
    End If
   
    'Select the first one found, or goto the first node if unsuccessful
    If Not nodFirstFind Is Nothing Then
        nodFirstFind.Selected = True
        nodFirstFind.EnsureVisible
    Else
        If Len(Me.txtSearchFor.Text & "") > 0 Then
            MsgBox "The text you specified can not be found", vbInformation
        End If
        GotoFirstNode tv
    End If
   
End Sub
Avatar billede terry Ekspert
12. februar 2021 - 16:43 #3
if you send me your email to ekspertenATsanthell.dk then I can send the example dB. Theres a few other functions required to get it to work correctly
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester