Newsgroup: it.comp.lang.visual-basic
Titolo: Aiuto controllo treeview...

Salve,
devo rimettere mano su questo controllo malefico e...e non ho i miei 
esempi, e non so dove guardare, e non so come fare :°( Hihihihi :))
qualcuno ha mica un esempio sempliciotto da passarmi per vedere un po 
come funziona? Precisamente io vorrei riempirlo con il contenuto del 
mio hd...avete presente come viene usato in napster(ma quanto è 
chiaccherato stò programma ultimamente :)) ) per sciegleiere la 
directory in cui scaricare/caricare gli mp3? Ecco, io devo fare una 
cosa mooolto simile, per non dire uguale :)) Mi serve di poter 
scegliere una directory, spuntare il quadratino e usare quella 
directory/unità selezionata. Una volta c' avevo giocherellato un po 
cone le treeview ma non ho niente qui. Qualunque cosa sia inerente è 
ben accetta :))
Saluti natalizi...
-- 
Posted from 212.29.130.175 by way of 
smtp1.libero.it
 [193.70.192.51] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto
devo rimettere mano su questo controllo malefico e...e non ho i miei
esempi, e non so dove guardare, e non so come fare :°( Hihihihi :))
qualcuno ha mica un esempio sempliciotto da passarmi per vedere un po
come funziona? Precisamente io vorrei riempirlo con il contenuto del
mio hd...avete presente come viene usato in napster(ma quanto è
chiaccherato stò programma ultimamente :)) ) per sciegleiere la
directory in cui scaricare/caricare gli mp3? Ecco, io devo fare una
cosa mooolto simile, per non dire uguale :)) Mi serve di poter
scegliere una directory, spuntare il quadratino e usare quella
directory/unità selezionata. Una volta c' avevo giocherellato un po
cone le treeview ma non ho niente qui. Qualunque cosa sia inerente è
ben accetta :))
Saluti natalizi...
stai parlando di due cose diverse.
se vuoi visualizzare il disco, la migliore e':
www.mvps.org/ccrp
 --> ftv (foldertreeview), ocx free.
se vuoi la finestrina di scelta dir di napster (te la puoi evitare scrivendo
nel registro il percorso del ftv), c'e' un api browseforfolder, direi si
chiami cosi'. mi sembra sia nei post di questi giorni. se non la trovi ti
cerco un esempio.

 post di questi giorni. se non la trovi ti cerco un esempio.
L' api si dovrebbe chiamare SHBrowseForFolder, però se hai un esempio 
per vedere come funziona sarebbe meglio, grazie!! :)
-- 
Posted from 212.29.130.175 by way of 
smtp3.libero.it
 [193.70.192.53] 


 L' api si dovrebbe chiamare SHBrowseForFolder, però se hai un esempio
per vedere come funziona sarebbe meglio, grazie!! :)
'form:
Private Sub cmdSetup_Click()
    On Error GoTo errman
    OldImgPath = ImgPath
    Dim tmp
    tmp = BrowseForFolder(Me.hwnd, _
        "Current folder: " & OldImgPath & "." & vbCrLf & _
        "The folder should contain only 320×400×256-color bitmaps." & vbCrLf
& _
        "Clic Cancel to keep the current folder.")
    If tmp <> "" And Right(tmp, 1) <> "\" Then tmp = tmp & "\"
    ImgPath = IIf(tmp <> "", tmp, OldImgPath)
    Exit Sub
errman:
    MsgBox Error
    ImgPath = GetWinDir()
    Resume Next
End Sub
Private Function BrowseForFolder(hWndOwner As Long, sPrompt As String) As
String
    Dim iNull As Integer
    Dim lpIDList As Long, lResult As Long
    Dim sPath As String
    Dim udtBI As BrowseInfo
    udtBI.hWndOwner = hWndOwner
    udtBI.lpszTitle = lstrcat(sPrompt, "")
    udtBI.ulFlags = BIF_RETURNONLYFSDIRS
    lpIDList = SHBrowseForFolder(udtBI)
    If lpIDList Then
        sPath = String$(MAX_PATH, 0)
        lResult = SHGetPathFromIDList(lpIDList, sPath)
        Call CoTaskMemFree(lpIDList)
        iNull = InStr(sPath, vbNullChar)
        If iNull Then sPath = Left$(sPath, iNull - 1)
    End If
    BrowseForFolder = sPath
End Function
'bas:
'BROWSE FOR FOLDER
Public Type BrowseInfo
    hWndOwner As Long
    pIDLRoot As Long
    pszDisplayName As Long
    lpszTitle As Long
    ulFlags As Long
    lpfnCallback As Long
    lParam As Long
    iImage As Long
End Type
Public Const BIF_RETURNONLYFSDIRS = 1
Public Const MAX_PATH = 260
Declare Sub CoTaskMemFree Lib "ole32.dll" _
    (ByVal hMem As Long)
Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" _
    (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Declare Function SHBrowseForFolder Lib "shell32" _
    (lpbi As BrowseInfo) As Long
Declare Function SHGetPathFromIDList Lib "shell32" _
    (ByVal pidList As Long, ByVal lpBuffer As String) As Long
'WINdir
Declare Function GetWindowsDirectory Lib "kernel32" Alias
"GetWindowsDirectoryA" _
(ByVal lpBuffer As String, ByVal nSize As Long) As Long

 francamente non me lo sono mai chiesto. 
 
Ti posto quello che ho fatto ora io, dagli un occhio, funziona...hai l' ocx per il tree, si? La soluzione che mi hai postato...non ho capito molto, (l' ho solo vista ora per fare il replay del messaggio, che schifo d' uomo che sono :) ) questo l' ho fatto èrendendo spunto da un esempio che è nel sito che mi hai dato tu (GRAAASSIE!! :) ). L' unica cosa che non riesco a fare è beccarmi il path della directory spuntata, se clicco sul nome della dir si, ma se clicco sul simboletto di spunta mi da sempre il path della dir selezionata. Ma esiste una proprietà maledetta per associare il path al click nel quadretto??
 
Ti mando il mio codice, anche perchè devo chiederti una cosa.
 
Option Explicit
 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
                                         (ByVal hWnd As Long, _
                                          ByVal wMsg As Long, _
                                          ByVal wParam As Long, _
                                          lParam As Any) As Long
 
Private Declare Function ImageList_ReplaceIcon Lib "comctl32.dll" _
                                                   (ByVal himl As Long, _
                                                    ByVal i As Long, _
                                                    ByVal hIcon As Long) As Long
 
Private Declare Function InvalidateRect Lib "user32" _
                                            (ByVal hWnd As Long, _
                                             lpRect As Any, _
                                             ByVal bErase As Long) As Long
 
'queste non ho capito a che servono, se le cambio non succede niente...
Private Const TV_FIRST = &H1100
Private Const TVM_GETIMAGELIST = (TV_FIRST + 8)
Private Const TVSIL_STATE = 2
 
'questo è il frutto del mio genio :)) in questo modo prendo il path della directory
Private Sub FolderTreeview1_Click()
    MsgBox FolderTreeview1.SelectedFolder
End Sub
 
Private Sub Form_Load()
    Dim iPic As Integer
    Dim himl As Long
    Dim index As Integer
 
    'i quadratini si mettono così, il tuo_tree.checkboxses = quello che può fare il quadratino, o meglio
    'in questo caso cliccando sul quadratino mi becco il path della dir dove ho fatto click, se poi 
    'selezioni gli altri 4 menbri vedi che succede :))
    FolderTreeview1.CheckBoxes = ftvClickSelect
 
    ' Calculate the Index of the PictureBox containing the first
    ' (unchecked) checkbox of the checkbox pairs.
    'e quindi? Il valore che ottiene all' avvio è -1, e che ci faccio??
    iPic = (index * 2) - 1
 
    ' Get the handle of the FTV's state imagelist containing its
    ' checkbox icons.
    'lo ignoro...anzi, non capisco ma mi adeguo :))
    himl = SendMessage(FolderTreeview1.hWnd, TVM_GETIMAGELIST, TVSIL_STATE, 0)
 
    If himl Then
      ' Instead of calling the FTV's Refresh method, which tells it
      ' to update the display of all its folders, all we need to do is
      ' to tell it to repaint itself so that the new checkboxes appear.
      'qui chiama la funzione api...mi piacerebbe sapere che fa...ora che sono giovane ed elastico 
      'nell' apprendere :))
      Call InvalidateRect(FolderTreeview1.hWnd, ByVal 0&, True)
    End If   ' himl
End Sub
 
Funziona tutto, l' unica cosa che mi manca e fare i quadratini rossi al click...ma quello sarebbe il minimo, come dire che non me fregherebbe niente :)) Ora vedo come si potrebbe fare, se tu hai qualche idea...sono qui :)
 
Saluti natalizi....
----------------------------------------------------------
Inviato da: 212.29.130.175, via 
http://usenet.iol.it
 

 Ti posto quello che ho fatto ora io, dagli un occhio, funziona...hai l'
ocx per il tree, si? La soluzione che mi hai postato...non ho capito molto,
(l' ho solo vista ora per fare il replay del messaggio, che schifo d' uomo
che sono :) )
dalla grammatica italiana passiamo felicemente all'inglese:
PLAY suonare
REPLAY suonare, mandare di nuovo (es. moviola, mandare un pezzo di musica).
pron.: ri-plei
REPLY rispondere. pr. ri-plai
:)
per il resto archivio il messaggio ma sono veramente molto sotto e non so
quando avro' tempo per guardarci.
ciao, a.

 per guardarci.
 
Eh, non c' hai tempo non c' hai tempo...perņ come ti sei sbrigato a mandarmi la "spiegazione" :)) sul REPLY; e lo so scrivere anche io!!! :))


 quando, ma solo quando mi sento veramente pronto e sicuro di me passo al
VB :))
ah, vuoi dire che ancora a vb non ci sei passato e che tutte le domande che
fai le hai trovate sulla gramamtica italiana ?
zio bo', come sono cambiate dai miei tempi...
:)