Avatar billede martin_moth Mester
01. september 2004 - 07:20 Der er 6 kommentarer og
1 løsning

Træstruktur med delvdefineret indhold

Hmm, svært at finde på en passende overskrift.

Jeg har en textfil med

Kat
  -hale
  -hoved
Hund
  -hale
  -hoved
    -- øjne
    -- ører
  - poter
Hest
Ko
    -ører
Kanin
  -hoved

Altså teskter i flere "niveauer"

Dem skal jeg have til at fungere som en Dir-kontrol, altså som en træstruktur der kan foldes ind og ud. Hvilken kontrol bruger man - og hvordan?
Avatar billede venne Nybegynder
01. september 2004 - 08:21 #1
Er det ikke bare et TreeView du skal bruge?
http://msdn.microsoft.com/library/en-us/cmctl198/html/vbobjTreeView.asp

Det kan være lidt tricky at få det til at spille, men det kan lade sig gøre...
Avatar billede venne Nybegynder
01. september 2004 - 08:33 #2
Hurtigt eksempel:

  Dim n1 As Node, n2 As Node, n3 As Node
 
  With TreeView1.Nodes
    Set n1 = .Add(, , , "Kat")
    Set n2 = .Add(n1.Index, tvwChild, , "hale")
    Set n2 = .Add(n1.Index, tvwChild, , "hoved")
    n1.Expanded = True
    Set n1 = .Add(, , , "Hund")
    Set n2 = .Add(n1.Index, tvwChild, , "hale")
    Set n2 = .Add(n1.Index, tvwChild, , "hoved")
    Set n3 = .Add(n2.Index, tvwChild, , "øjne")
    Set n3 = .Add(n2.Index, tvwChild, , "ører")
    n2.Expanded = True
    n1.Expanded = True
  End With
Avatar billede martin_moth Mester
01. september 2004 - 09:24 #3
Ok - det er det så.

Så skal jeg bare lave en smart rutine der læser ind i et treeview, da der er et ukendt antal poster og ukendt antal underposter. Det skal jeg nok finde ud af.

Hvordan registrere man så hvad der er markeret - hvis jeg vil aflæse hvilken node der er markeret, når jeg fx. trykker på en commandbutton?
Avatar billede martin_moth Mester
01. september 2004 - 09:51 #4
Eller rettere - hvordan får jeg at vide, at det er "Hund > Hoved > Ører" der er markeret, når det f.eks. er det der er markeret?
Avatar billede venne Nybegynder
01. september 2004 - 11:04 #5
Du kan gå fra SelectedItem via Parent helt op til roden
For eksempel:

  Dim n As Node
  Dim s As String
 
  Set n = TreeView1.SelectedItem
  Do Until n Is Nothing
    If s <> "" Then s = " > " & s
    s = n.Text & s
    Set n = n.Parent
  Loop
Avatar billede martin_moth Mester
01. september 2004 - 11:53 #6
Smart.

Smid et svar, min dygtige ven!
Avatar billede venne Nybegynder
01. september 2004 - 11:59 #7
(-;
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
Kategori
Kurser inden for grundlæggende programmering

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