kleur aanpassen TreeviewNode na zoeken waarde in treeview

Status
Niet open voor verdere reacties.

weswillem

Gebruiker
Lid geworden
8 nov 2011
Berichten
310
Middels een zoekopdracht naar een waarde in de Treeview wil ik dat
de geselecteerde Node in de Treeview een andere kleur toebedeeld krijg.
Nu is het zo dat als de waarde is gevonden de achtergrond grijs en moeilijk te zien is
Vandaar de kleurwijziging.

Gevonden geeft een nummer terug
Iemand een idee?
bvd

Code:
TreeView1.Nodes(Gevonden).Selected = True
       
 TreeView1.Nodes(Gevonden).ForeColor = rgbRoyalBlue
 
Laatst bewerkt:
Doe het bestandje er eens bij, da's zoveel handiger :).
 
@OctaFish

Zou wel willen maar is privacy gevoelig.
Moet ik even een nieuw bestandje aanmaken
 
Lijkt mij een goede zaak :). Altijd testbestanden (met dummy data) gebruiken als je wat ontwikkelt.
 
Ik zie het probleem niet.
De markering van een geselecteerd item lijkt me overduidelijk.
Iets met je monitor-instellingen ?
 

Bijlagen

  • __Treeview_snb.xlsm
    21,2 KB · Weergaven: 16
@snb @Octafish

Dat is het probleem niet
In bij gevoegd bestand tik ik in het tekstveld een itemnaam van de treeview.
Krijg melding dat dit gevonden is.
Standaard is het geselecteerde heel licht grijs, maar nu moet een andere kleur worden.
Sommige zien dat grijs niet, dus wil het nu accentueren.
Bij nieuwe invoer worden alles gereset.
Dit bestand werkt wel.
Alleen niet in mijn eigen project
 

Bijlagen

  • TestBestand.xlsm
    55,3 KB · Weergaven: 26
- gebruik geen 'Select' of 'activate' in VBA
- als de code in de juiste codemodule wordt opgeslagen is 'Me.' overbodig
- leegmaken (.clear) van een lege treeview bij het laden van een userform is zinloos.
- bestudeer nog eens de methode With ... End With
- eigenschappen van een listview stel je in in design mode, niet in de Initialize-procedure.
- beperk de interaktie met het werkboek/werkblad tot een minimum door gebruik te maken van Arrays.
- van 'Key1" & " " & i ktijg ik geen warme gevoelens

Dan rest:

Code:
Private Sub UserForm_Initialize()
  sn = Blad1.Range("B1:B10")
   
  With TreeView1.Nodes
    .Add , , "Prio", "Prio Zaken"
    .Add , , "Lopend", "Lopende Zaken"
    
    For j = 1 To 10
      .Add "Prio", 4, sn(j,1), sn(j, 1)
    Next
  End With
End Sub
 

Bijlagen

  • 0_treeview.xlsb
    23,8 KB · Weergaven: 19
Laatst bewerkt:
Of de TextBox_Enter het juiste instrument is heb ik niet bepaald.
Code:
Private Sub TextBox1_Enter()
  For a = 1 To TreeView1.Nodes.Count
     TreeView1.Nodes(a).BackColor = rgbWhite
  Next a
    For Each cl In TreeView1.Nodes
      If cl = TextBox1.Text Then cl.BackColor = vbRed
    Next cl
 End Sub

Maar dan zo.
Code:
Private Sub TextBox1_Enter()
    For Each cl In TreeView1.Nodes
      If cl = TextBox1.Text Then 
        cl.BackColor = vbRed
      else
        cl.backcolor = vbwhite
      end if
    Next cl
 End Sub

anders geschreven.

Code:
Private Sub TextBox1_Enter()
    For Each nds In TreeView1.Nodes
      nds.BackColor = iif(nds = textbox1.text, vbred,vbwhite)
    Next nds
 End Sub
 
Laatst bewerkt:
@HSV

Dat gevoel bekroop me ook al bij deze gebeurtenis Engkter :):d
 
een mobieltje kan soms ongewenste teksten torpederen.
 
Dat lukt mij met een gewoon toetsenbrood ook. ;)
 
@HSV

Bij het laatste bericht heb ik alle twee de codes uitgeprobeerd.
Het werkt, ware het niet dat een bepaalde parent meer dan 30 nodes bevat.
Maar hoe gaat het om de geselecteerde node te selecteren.
Ik moet daarvoor scrollen.
Wanneer ik selected gebruik werken de kleuren niet meer.
Ben nu al er een tijd mee bezig., hetgeen mij niet lukt.
Misschien hebben jullie een optie?
 
Zo?

Code:
Private Sub TextBox1_Enter()
    For Each nds In TreeView1.Nodes
    If TextBox1.Text = nds Then
      nds.BackColor = vbRed
      nds.Selected = True
    Else
      nds.BackColor = vbWhite
    End If
    Next nds
 End Sub
 
@HSV

Hij werkt niet helemaal. Item wordt wel geselecteerd (grijs), maar om de rode tekst te zien moet ik een andere node klikken.
Ook geprobeerd om het om te draaien eerst selected en dan kleur, ook geen respons.
Als ik selected weghaal wordt het item rood.
Maar de parent blijf dicht en moet dan scrollen.
 
Laatst bewerkt:
Heb je mijn bestand (laatste versie) wel gebruikt ?
 
Werkt prima in Excel 2007.

Doe het eens in de change.
Code:
Private Sub TextBox1_Change()
Dim nds As Node
    For Each nds In TreeView1.Nodes
    If TextBox1.Text = nds Then
      nds.BackColor = vbRed
      nds.Selected = True
    Else
      nds.BackColor = vbWhite
    End If
    Next nds
End Sub
 
Laatst bewerkt:
@SNB

Deze nu geprobeerd. Heb eveneens een textbox toegevoegd in bijgaand bestandje om te proberen zoals het in mijn project gaat.
Via dit moet ik op een andere node klikken om de geselecteerde node zwart achter en wit voor te zien

Zoals ik het nu heb wordt de node geselecteerd maar moet andere node klikken om het zien
Code:
Private Sub txtZoeknr_AfterUpdate()
Dim Rng1 As Range
Dim Nummer1 As Variant
Dim Gevonden As Variant

wsData.Select
Nummer1 = txtZoeknr.Value
If Nummer1 = "" Then Exit Sub

Set Rng1 = wsData.Range("B:B").Find(Nummer1, LookIn:=xlValues, Lookat:=xlWhole)
 
    If (Not Rng1 Is Nothing) Then
        MsgBox "Het BVHnummer dat U zocht is gevonden" & vbNewLine & "KLIK OP DE GRIJZE BALK OM TE BEWERKEN", vbInformation, "Gelukkig..." & Environ("username")
        Rng1.Select
        Gevonden = ActiveCell.Value & " - " & ActiveCell.Offset(0, 2).Value
        
        For Each Node In TreeView1.Nodes
            If Node = Gevonden Then
                Node.Selected = True
                Node.BackColor = vblack
                Node.ForeColor = vbWhite
                Exit For
            Else
                Node.BackColor = vbWhite
            End If
        Next Node
    Else
        MsgBox "Opgegeven nummer is niet gevonden", vbInformation, "Sorry ...." & Environ("username")
    End If
    txtZoeknr.Value = ""
End Sub
 

Bijlagen

  • 0_treeview.xlsb
    20,1 KB · Weergaven: 14
@HSV

Item wordt geselecteerd. Maar moet op andere node klikken om het te zien
 
Heb je alle codes behalve de Initialize wel verwijderd?
 
Min vraag was om mijn bestand te gebruiken, niet om het aan te passen.
Hoe kun je nu een suggestie beoordelen als je die niet intact laat ?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan