+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Treeview, intercettare primo parent del nodo selezionato

  1. #1
    terrornoize non è in linea Scolaretto
    Post
    67

    Treeview, intercettare primo parent del nodo selezionato

    Ciao a tutti,
    è un po' che ci provo senza risultati.

    Ho un treeview con n nodi, come posso fare per intercettare il primissimo "parent" del nodo selezionato?

    Esempio:

    Nonno A
    --- Padre 1
    --- Padre 2
    Nonno B
    --- Padre 3
    -------Figlio 1

    Ho selezionato "Figlio 1", come posso recuperare la stringa "Nonno B"?

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,628
    Cicli in modo ricorsivo il parent finché non ottieni un errore o Nothing all'oggetto parent.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  3. #3
    terrornoize non è in linea Scolaretto
    Post
    67
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Cicli in modo ricorsivo il parent finché non ottieni un errore o Nothing all'oggetto parent.
    Mi sa che è un po' troppo complicato per me...

    Per ovviare momentaneamente ho preso l' .Object.SelectedItem.FullPath e ho estratto la parte di stringa prima del separatore.

  4. #4
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,628
    Se e quando avrai voglia di imparare meglio come si fa leggi questo:
    https://stackoverflow.com/questions/...p-in-tree-view
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  5. #5
    terrornoize non è in linea Scolaretto
    Post
    67
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Se e quando avrai voglia di imparare meglio come si fa leggi questo:
    https://stackoverflow.com/questions/...p-in-tree-view
    Certo che ho voglia... grazie mille.
    Avevo fretta di risolvere in qualche modo, ma se riesco a in un secondo tempo a farlo in maniera più pulita è molto meglio.

    Poi leggo.

  6. #6
    terrornoize non è in linea Scolaretto
    Post
    67
    Anche per tutti gli altri che googleranno, per risalire direttamente al primo parent basta semplicemente aggiungere .Root al nodo interessato, senza bisogno di ciclare nei parent.

    ad esempio: xTree.Object.SelectedItem.Root (per sapere quale sia il primo padre del nodo selezionato)

  7. #7
    terrornoize non è in linea Scolaretto
    Post
    67
    Mentre per individuare e formattare i nodi padre:

    codice:
    Private Sub Formatta_Nodi_Padre()
    
    On Error GoTo Err_cmdCollapseTree_Click
        Dim myTree As TreeView
        Dim myNodes As Nodes
        Dim myNode As node
        Set myTree = Me.xTree.Object
        Set myNodes = myTree.Nodes
        Set myNode = myTree.SelectedItem
            
        Do
            If myNode.Parent Is Nothing Then
        Exit Do
            End If
            Set myNode = myNode.Parent
            myNode.Bold = True
            myNode.ForeColor = vbBlue
        Loop
        
    Exit_cmdCollapseTree_Click:
        Exit Sub
    Err_cmdCollapseTree_Click:
        MsgBox Err.Description
        Resume Exit_cmdCollapseTree_Click
    
    End Sub
    Grazie del supporto ALEX, mi hai dato lo spunto per mettere giù parte di questo codice.

  8. #8
    terrornoize non è in linea Scolaretto
    Post
    67
    Quote Originariamente inviato da terrornoize Visualizza il messaggio
    Anche per tutti gli altri che googleranno, per risalire direttamente al primo parent basta semplicemente aggiungere .Root al nodo interessato, senza bisogno di ciclare nei parent.

    ad esempio: xTree.Object.SelectedItem.Root (per sapere quale sia il primo padre del nodo selezionato)
    Cazzata enorme, così va a prendere il primissimo nodo e basta.
    Mi ero illuso perché per combinazione il nodo selezionato aveva proprio come primo padre il primo nodo.

  9. #9
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,628
    Non ricordavo del metodo root sono troppi anni che non uso il controllo... ma il loopback fa esattamente la medesima cosa.
    La funzione tuttavia è utile in caso ti serva arrivare ad un Parent Parziale, quindi potresti scriverla in mkdo da ricavare il parent passando il level ...
    Ovviamente sono idee per ragionare sul codice è provare cose potenzialmente utili.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  10. #10
    terrornoize non è in linea Scolaretto
    Post
    67
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Non ricordavo del metodo root sono troppi anni che non uso il controllo... ma il loopback fa esattamente la medesima cosa.
    La funzione tuttavia è utile in caso ti serva arrivare ad un Parent Parziale, quindi potresti scriverla in mkdo da ricavare il parent passando il level ...
    Ovviamente sono idee per ragionare sul codice è provare cose potenzialmente utili.
    Si si, ho trovato il primo parent così come mi avevi suggerito tu:

    codice:
        Do
            If myNode.Parent Is Nothing Then
        Exit Do
            End If
            Set myNode = myNode.Parent
            Find_first_Parent = myNode
        Loop

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi