[VB6] Nodes verplaatsen in TreeView

Pagina: 1
Acties:

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 26-08 16:28
Ik wil een node verplaatsen naar een andere positie in een Treeview. Eerst verwijder ik de oude node en daarna voeg ik een nieuwe toe op de nieuwe positie. Maar dan krijgt die een nieuwe index. In de Treeview is de nieuwe node wel goed te zien.
Als ik daarna de keys van alle nodes in een tekstfile wil zetten komt deze nieuwe node onderaan te staan terwijl dat niet de bedoeling is. Hoe los ik dit op??

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 18:54

Crazy D

I think we should take a look.

Als je de nodes uitleest met een For Each n In tv.Nodes, krijg je ze dan wel in de goede volgorde?

Exact expert nodig?


  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 26-08 16:28
Nee, daar zit eigenlijk het probleem. Ik heb het volgende:

For Each TNode in Trv.Nodes
VolgFile.WriteLine TNode.Key
Next

Maar daar gebruikt ie de index voor en dat is niet echt de bedoeling, want dat komt de verplaatste node onderaan in de file te staan.

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
never use FOR EACH want das ambigue...

  • Unipuma
  • Registratie: Juli 2001
  • Laatst online: 06-04-2021
Uhmm.. als je een node naar een andere positie wil zetten, waarom verander je dan niet zijn Parent property? Dan blijft zijn key behouden, en ook alle nodes die onder de huidige hangen worden meteen mee omgehangen.
En als je de nodes in volgorde wilt uitlezen kun je het beste een recursieve functie gebruiken (een zichzelf aanroepende functie) om door de hele boomstructuur te lopen. En maak gebruik van de standaard functionaliteit die de treeview bied: Children collectie, en FirstSibling, Next ed.
Zoek even in je MSDN.

So much fun, it's a miracle it isn't declared illegal: driving a motorcycle


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Waarom moeten ze perse in die volgorde in de tekstfile staan?

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 26-08 16:28
Maar als ik de Parent property van de node verander refresht ie de treeview niet. Hoe pak ik dat aan??

  • Tranq
  • Registratie: Oktober 1999
  • Laatst online: 16-10-2024
.refresh aanroepen?

  • Mottebelke
  • Registratie: Juni 2001
  • Laatst online: 26-08 16:28
Dat heb ik gedaan, maar er lijkt niets te gebeuren (de refresh-functie wordt wel uitgevoerd). Ik heb nu het volgende:

Public Sub DragDrop(Source As Control, Trv As TreeView)
Dim Naam, Path As String
Dim Doel As Node
Dim FSO As New FileSystemObject

On Error GoTo Out:
Naam = Trv.SelectedItem.Text
Path = Trv.SelectedItem.Key

If InStr(Source.DropHighlight.Key, ".url") Then
Set Doel = Source.DropHighlight.Parent
Else
Set Doel = Source.DropHighlight
End If
If InStr(Path, ".url") Then
FSO.MoveFile Path, Doel.Key & "\" & Naam & ".url"
Else
FSO.MoveFolder Path, Doel.Key & "\" & Naam
End If
Trv.SelectedItem.Parent = Doel
Trv.Refresh
Trv.Drag 0
Source.DropHighlight = Nothing
Exit Sub

Maar dat lijkt ie dus niet uit te voeren. Wel worden de files of folders verplaatst.
Pagina: 1