Jump to content



Photo

Display (on the fly) a directory tree in a TreeView


  • Please log in to reply
10 replies to this topic

#1 Yashied

Yashied

    Happy in Moscow

  • MVPs
  • 2,512 posts

Posted 19 January 2011 - 06:46 PM

This is just an example. Note, WinAPIEx UDF library required.

:x

AutoIt         
#Include <GUIConstantsEx.au3> #Include <GUIImageList.au3> #Include <GUITreeView.au3> #Include <TreeViewConstants.au3> #Include <WindowsConstants.au3> #Include <WinAPIEx.au3> Opt('MustDeclareVars', 1) Global $hForm, $hTreeView, $hImageList, $hItem, $hNext, $hSelect = 0, $hInput, $Input, $Dummy1, $Dummy2 Global $X, $Y, $sPath, $sRoot = @HomeDrive $hForm = GUICreate('MyGUI', 600, 600) $Input = GUICtrlCreateInput('', 20, 20, 560, 19) $hInput = GUICtrlGetHandle(-1) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateTreeView(20, 50, 560, 530, -1, $WS_EX_CLIENTEDGE) $hTreeView = GUICtrlGetHandle(-1) $Dummy1 = GUICtrlCreateDummy() $Dummy2 = GUICtrlCreateDummy() If _WinAPI_GetVersion() >= '6.0' Then     _WinAPI_SetWindowTheme($hTreeView, 'Explorer') EndIf $hImageList = _GUIImageList_Create(16, 16, 5, 1) _GUIImageList_AddIcon($hImageList, @SystemDir & '\shell32.dll', 3) _GUIImageList_AddIcon($hImageList, @SystemDir & '\shell32.dll', 4) _GUICtrlTreeView_SetNormalImageList($hTreeView, $hImageList) $sRoot = StringRegExpReplace($sRoot, '\\+\Z', '') $sPath = StringRegExpReplace($sRoot, '^.*\\', '') If StringInStr($sPath, ':') Then     $sRoot &= '\'     $sPath &= '\' EndIf ;_GUICtrlTreeView_BeginUpdate($hTreeView) _TVUpdate($hTreeView, _GUICtrlTreeView_AddChild($hTreeView, 0, $sPath, 0, 0)) ;_GUICtrlTreeView_EndUpdate($hTreeView) GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY') GUISetState() _GUICtrlTreeView_Expand($hTreeView, _GUICtrlTreeView_GetFirstItem($hTreeView)) While 1     Switch GUIGetMsg()         Case $GUI_EVENT_CLOSE             Exit         Case $Dummy1 ; Update             GUISetCursor(1, 1)             $hItem = _GUICtrlTreeView_GetFirstChild($hTreeView, GUICtrlRead($Dummy1))             If $hItem Then                 While $hItem                     $hNext = _GUICtrlTreeView_GetNextSibling($hTreeView, $hItem)                     If Not _TVUpdate($hTreeView, $hItem) Then                         _GUICtrlTreeView_Delete($hTreeView, $hItem)                     EndIf                     $hItem = $hNext                 WEnd                 _WinAPI_RedrawWindow($hTreeView)             EndIf             GUISetCursor(2, 0)         Case $Dummy2 ; Menu             $hItem = GUICtrlRead($Dummy2)             $sPath = _TVGetPath($hTreeView, $hItem, $sRoot)             ConsoleWrite('-------------------------------' & @CR)             ConsoleWrite('Handle: ' & $hItem & @CR)             ConsoleWrite('Path:   ' & $sPath & @CR)             If _WinAPI_PathIsDirectory($sPath) Then                 ConsoleWrite('Type:   ' & 'Directory' & @CR)             Else                 ConsoleWrite('Type:   ' & 'File' & @CR)             EndIf             ConsoleWrite('X:      ' & MouseGetPos(0) & @CR)             ConsoleWrite('Y:      ' & MouseGetPos(1) & @CR)             ConsoleWrite('-------------------------------' & @CR)     EndSwitch WEnd Func _TVGetPath($hTV, $hItem, $sRoot)     Local $Path = StringRegExpReplace(_GUICtrlTreeView_GetTree($hTV, $hItem), '([|]+)|(\\[|])', '\\')     If Not $Path Then         Return ''     EndIf     If Not StringInStr($Path, ':') Then         Return StringRegExpReplace($sRoot, '(\\[^\\]*(\\|)+)\Z', '\\') & $Path     EndIf     Return $Path EndFunc   ;==>_TVGetPath Func _TVSetPath($hTV, $hItem, $sRoot)     GUICtrlSetData($Input, _WinAPI_PathCompactPath($hInput, _TVGetPath($hTV, $hItem, $sRoot), 554))     $hSelect = $hItem EndFunc   ;==>_TVSetPath Func _TVUpdate($hTV, $hItem)     Local $hImageList = _SendMessage($hTV, $TVM_GETIMAGELIST)     Local $Path = StringRegExpReplace(_TVGetPath($hTV, $hItem, $sRoot), '\\+\Z', '')     Local $hSearch, $hIcon, $Index, $File     $hSearch = FileFindFirstFile($Path & '\*')     If $hSearch = -1 Then         If Not @error Then             If FileExists($Path) Then ;               If _WinAPI_PathIsDirectory($Path) Then ;                   ; Access denied ;               EndIf             Else                 Return 0             EndIf         EndIf     Else         While 1             $File = FileFindNextFile($hSearch)             If @error Then                 ExitLoop             EndIf             If @extended Then                 _GUICtrlTreeView_AddChild($hTV, $hItem, $File, 0, 0)             EndIf         WEnd         FileClose($hSearch)     EndIf     $hSearch = FileFindFirstFile($Path & '\*')     If $hSearch = -1 Then     Else         While 1             $File = FileFindNextFile($hSearch)             If @error Then                 ExitLoop             EndIf             If Not @extended Then                 $hIcon = _WinAPI_ShellExtractAssociatedIcon($Path & '\' & $File, 1)                 $Index = _GUIImageList_ReplaceIcon($hImageList, -1, $hIcon)                 _GUICtrlTreeView_AddChild($hTV, $hItem, $File, $Index, $Index)                 _WinAPI_DestroyIcon($hIcon)             EndIf         WEnd         FileClose($hSearch)     EndIf     Return 1 EndFunc   ;==>_TVUpdate Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)     Local $tNMTREEVIEW = DllStructCreate($tagNMTREEVIEW, $lParam)     Local $hItem = DllStructGetData($tNMTREEVIEW, 'NewhItem')     Local $iState = DllStructGetData($tNMTREEVIEW, 'NewState')     Local $hTV = DllStructGetData($tNMTREEVIEW, 'hWndFrom')     Local $ID = DllStructGetData($tNMTREEVIEW, 'Code')     Local $tTVHTI, $tPoint     Switch $hTV         Case $hTreeView             Switch $ID                 Case $TVN_ITEMEXPANDEDW                     If Not FileExists(_TVGetPath($hTV, $hItem, $sRoot)) Then                         _GUICtrlTreeView_Delete($hTV, $hItem)                         If BitAND($iState, $TVIS_SELECTED) Then                             _TVSetPath($hTV, _GUICtrlTreeView_GetSelection($hTV), $sRoot)                         EndIf                     Else                         If Not BitAND($iState, $TVIS_EXPANDED) Then                             _GUICtrlTreeView_SetSelectedImageIndex($hTV, $hItem, 0)                             _GUICtrlTreeView_SetImageIndex($hTV, $hItem, 0)                         Else                             _GUICtrlTreeView_SetSelectedImageIndex($hTV, $hItem, 1)                             _GUICtrlTreeView_SetImageIndex($hTV, $hItem, 1)                             If Not _GUICtrlTreeView_GetItemParam($hTV, $hItem) Then                                 _GUICtrlTreeView_SetItemParam($hTV, $hItem, 0x7FFFFFFF)                                 GUICtrlSendToDummy($Dummy1, $hItem)                             EndIf                         EndIf                     EndIf                 Case $TVN_SELCHANGEDW                     If BitAND($iState, $TVIS_SELECTED) Then                         If Not FileExists(_TVGetPath($hTV, $hItem, $sRoot)) Then                             _GUICtrlTreeView_Delete($hTV, $hItem)                             $hItem = _GUICtrlTreeView_GetSelection($hTV)                         EndIf                         If $hItem <> $hSelect Then                             _TVSetPath($hTV, $hItem, $sRoot)                         EndIf                     EndIf                 Case $NM_RCLICK                         $tPoint = _WinAPI_GetMousePos(1, $hTV)                         $tTVHTI = _GUICtrlTreeView_HitTestEx($hTV, DllStructGetData($tPoint, 1), DllStructGetData($tPoint, 2))                         $hItem = DllStructGetData($tTVHTI, 'Item')                         If BitAND(DllStructGetData($tTVHTI, 'Flags'), $TVHT_ONITEM) Then                             _GUICtrlTreeView_SelectItem($hTreeView, $hItem)                             If Not FileExists(_TVGetPath($hTV, $hItem, $sRoot)) Then                                 _GUICtrlTreeView_Delete($hTV, $hItem)                                 $hItem = _GUICtrlTreeView_GetSelection($hTV)                             Else                                 GUICtrlSendToDummy($Dummy2, $hItem)                             EndIf                             If $hItem <> $hSelect Then                                 _TVSetPath($hTV, $hItem, $sRoot)                             EndIf                         EndIf                 EndSwitch     EndSwitch     Return $GUI_RUNDEFMSG EndFunc   ;==>WM_NOTIFY

Posted Image


Edited by Yashied, 20 January 2011 - 02:28 PM.








#2 MvGulik

MvGulik

    Universalist

  • Active Members
  • PipPipPipPipPipPip
  • 2,795 posts

Posted 19 January 2011 - 10:35 PM

"On the fly" ?
You mean dynamically updated when a folder is changed? (add/del/rename) :x
Don't Fall in Love With Ideas"If you fall in love with an idea, you won't see the merits of alternative approaches -- and will probably miss an opportunity or two. One of life's great pleasures is letting go of a previously cherished idea. Then you're free to look for new ones. What part of your idea are you in love with? What would happen if you kissed it goodbye?"

#3 Yashied

Yashied

    Happy in Moscow

  • MVPs
  • 2,512 posts

Posted 19 January 2011 - 11:19 PM

Another algorithm.

AutoIt         
#Include <GUIConstantsEx.au3> #Include <GUIImageList.au3> #Include <GUITreeView.au3> #Include <TreeViewConstants.au3> #Include <WindowsConstants.au3> #Include <WinAPIEx.au3> Opt('MustDeclareVars', 1) Global $hForm, $hTreeView, $hImageList, $hItem = 0, $hSelect = 0, $hInput, $Input, $Dummy1, $Dummy2 Global $X, $Y, $sPath, $sRoot = @HomeDrive $hForm = GUICreate('MyGUI', 600, 600) $Input = GUICtrlCreateInput('', 20, 20, 560, 19) $hInput = GUICtrlGetHandle(-1) GUICtrlSetState(-1, $GUI_DISABLE) ;$hTreeView = _GUICtrlTreeView_Create($hForm, 20, 50, 560, 530, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) ;_GUICtrlTreeView_SetHeight($hTreeView, 18) GUICtrlCreateTreeView(20, 50, 560, 530, -1, $WS_EX_CLIENTEDGE) $hTreeView = GUICtrlGetHandle(-1) $Dummy1 = GUICtrlCreateDummy() $Dummy2 = GUICtrlCreateDummy() If _WinAPI_GetVersion() >= '6.0' Then     _WinAPI_SetWindowTheme($hTreeView, 'Explorer') EndIf $hImageList = _GUIImageList_Create(16, 16, 5, 1) _GUIImageList_AddIcon($hImageList, @SystemDir & '\shell32.dll', 3) _GUIImageList_AddIcon($hImageList, @SystemDir & '\shell32.dll', 4) _GUIImageList_AddIcon($hImageList, @SystemDir & '\shell32.dll', 51) _GUICtrlTreeView_SetNormalImageList($hTreeView, $hImageList) $sRoot = StringRegExpReplace(FileGetLongName($sRoot), '\\+\Z', '') $sPath = StringRegExpReplace($sRoot, '^.*\\', '') If StringInStr($sPath, ':') Then     $sRoot &= '\'     $sPath &= '\' EndIf If _WinAPI_PathIsDirectory($sRoot) Then     $hItem = _GUICtrlTreeView_AddChild($hTreeView, 0, $sPath, 0, 0)     If FileClose(FileFindFirstFile($sRoot & '\*')) Then         _GUICtrlTreeView_AddChild($hTreeView, $hItem, '', 2, 2)     EndIf EndIf GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY') GUISetState() If $hItem Then     _GUICtrlTreeView_Expand($hTreeView, $hItem) EndIf While 1     Switch GUIGetMsg()         Case $GUI_EVENT_CLOSE             Exit         Case $Dummy1 ; Update             GUISetCursor(1, 1)             _TVUpdate($hTreeView, GUICtrlRead($Dummy1))             GUISetCursor(2, 0)         Case $Dummy2 ; Menu             $hItem = GUICtrlRead($Dummy2)             $sPath = _TVGetPath($hTreeView, $hItem, $sRoot)             ConsoleWrite('-------------------------------' & @CR)             ConsoleWrite('Handle: ' & $hItem & @CR)             ConsoleWrite('Path:   ' & $sPath & @CR)             If _WinAPI_PathIsDirectory($sPath) Then                 ConsoleWrite('Type:   ' & 'Directory' & @CR)             Else                 ConsoleWrite('Type:   ' & 'File' & @CR)             EndIf             ConsoleWrite('X:      ' & MouseGetPos(0) & @CR)             ConsoleWrite('Y:      ' & MouseGetPos(1) & @CR)             ConsoleWrite('-------------------------------' & @CR)     EndSwitch WEnd Func _TVGetPath($hTV, $hItem, $sRoot)     Local $Path = StringRegExpReplace(_GUICtrlTreeView_GetTree($hTV, $hItem), '([|]+)|(\\[|])', '\\')     If Not $Path Then         Return ''     EndIf     If Not StringInStr($Path, ':') Then         Return StringRegExpReplace($sRoot, '(\\[^\\]*(\\|)+)\Z', '\\') & $Path     EndIf     Return $Path EndFunc   ;==>_TVGetPath Func _TVSetPath($hTV, $hItem, $sRoot)     GUICtrlSetData($Input, _WinAPI_PathCompactPath($hInput, _TVGetPath($hTV, $hItem, $sRoot), 554))     $hSelect = $hItem EndFunc   ;==>_TVSetPath Func _TVUpdate($hTV, $hItem)     Local $hImageList = _SendMessage($hTV, $TVM_GETIMAGELIST)     Local $Path = StringRegExpReplace(_TVGetPath($hTV, $hItem, $sRoot), '\\+\Z', '')     Local $hIcon, $hSearch, $hSubitem     Local $Index, $File     _WinAPI_LockWindowUpdate($hTV)     _GUICtrlTreeView_Delete($hTV, _GUICtrlTreeView_GetFirstChild($hTV, $hItem))     $hSearch = FileFindFirstFile($Path & '\*')     If $hSearch = -1 Then         If Not @error Then             If FileExists($Path) Then ;               If _WinAPI_PathIsDirectory($Path) Then ;                   ; Access denied ;               EndIf             Else                 _GUICtrlTreeView_Delete($hTV, $hItem)                 _WinAPI_LockWindowUpdate(0)                 Return 0             EndIf         EndIf     Else         While 1             $File = FileFindNextFile($hSearch)             If @error Then                 ExitLoop             EndIf             If @extended Then                 $hSubItem = _GUICtrlTreeView_AddChild($hTV, $hItem, $File, 0, 0)                 If FileClose(FileFindFirstFile($Path & '\' & $File & '\*')) Then                     _GUICtrlTreeView_AddChild($hTV, $hSubItem, '', 2, 2)                 EndIf             EndIf         WEnd         FileClose($hSearch)     EndIf     $hSearch = FileFindFirstFile($Path & '\*')     If $hSearch = -1 Then     Else         While 1             $File = FileFindNextFile($hSearch)             If @error Then                 ExitLoop             EndIf             If Not @extended Then                 $hIcon = _WinAPI_ShellExtractAssociatedIcon($Path & '\' & $File, 1)                 $Index = _GUIImageList_ReplaceIcon($hImageList, -1, $hIcon)                 _GUICtrlTreeView_AddChild($hTV, $hItem, $File, $Index, $Index)                 _WinAPI_DestroyIcon($hIcon)             EndIf         WEnd         FileClose($hSearch)     EndIf     _GUICtrlTreeView_SetItemParam($hTV, $hItem, 0x7FFFFFFF)     _WinAPI_LockWindowUpdate(0)     Return 1 EndFunc   ;==>_TVUpdate Func _WinAPI_LockWindowUpdate($hWnd)     Local $Ret = DllCall('user32.dll', 'int', 'LockWindowUpdate', 'hwnd', $hWnd)     If (@error) Or (Not $Ret[0]) Then         Return SetError(1, 0, 0)     EndIf     Return 1 EndFunc   ;==>_WinAPI_LockWindowUpdate Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)     Local $tNMTREEVIEW = DllStructCreate($tagNMTREEVIEW, $lParam)     Local $hItem = DllStructGetData($tNMTREEVIEW, 'NewhItem')     Local $iState = DllStructGetData($tNMTREEVIEW, 'NewState')     Local $hTV = DllStructGetData($tNMTREEVIEW, 'hWndFrom')     Local $ID = DllStructGetData($tNMTREEVIEW, 'Code')     Local $tTVHTI, $tPoint     Switch $hTV         Case $hTreeView             Switch $ID                 Case $TVN_ITEMEXPANDEDW                     If Not FileExists(_TVGetPath($hTV, $hItem, $sRoot)) Then                         _GUICtrlTreeView_Delete($hTV, $hItem)                         If BitAND($iState, $TVIS_SELECTED) Then                             _TVSetPath($hTV, _GUICtrlTreeView_GetSelection($hTV), $sRoot)                         EndIf                     Else                         If Not BitAND($iState, $TVIS_EXPANDED) Then                             _GUICtrlTreeView_SetSelectedImageIndex($hTV, $hItem, 0)                             _GUICtrlTreeView_SetImageIndex($hTV, $hItem, 0)                         Else                             _GUICtrlTreeView_SetSelectedImageIndex($hTV, $hItem, 1)                             _GUICtrlTreeView_SetImageIndex($hTV, $hItem, 1)                             If Not _GUICtrlTreeView_GetItemParam($hTV, $hItem) Then                                 GUICtrlSendToDummy($Dummy1, $hItem)                             EndIf                         EndIf                     EndIf                 Case $TVN_SELCHANGEDW                     If BitAND($iState, $TVIS_SELECTED) Then                         If Not FileExists(_TVGetPath($hTV, $hItem, $sRoot)) Then                             _GUICtrlTreeView_Delete($hTV, $hItem)                             $hItem = _GUICtrlTreeView_GetSelection($hTV)                         EndIf                         If $hItem <> $hSelect Then                             _TVSetPath($hTV, $hItem, $sRoot)                         EndIf                     EndIf                 Case $NM_RCLICK                         $tPoint = _WinAPI_GetMousePos(1, $hTV)                         $tTVHTI = _GUICtrlTreeView_HitTestEx($hTV, DllStructGetData($tPoint, 1), DllStructGetData($tPoint, 2))                         $hItem = DllStructGetData($tTVHTI, 'Item')                         If BitAND(DllStructGetData($tTVHTI, 'Flags'), $TVHT_ONITEM) Then                             _GUICtrlTreeView_SelectItem($hTreeView, $hItem)                             If Not FileExists(_TVGetPath($hTV, $hItem, $sRoot)) Then                                 _GUICtrlTreeView_Delete($hTV, $hItem)                                 $hItem = _GUICtrlTreeView_GetSelection($hTV)                             Else                                 GUICtrlSendToDummy($Dummy2, $hItem)                             EndIf                             If $hItem <> $hSelect Then                                 _TVSetPath($hTV, $hItem, $sRoot)                             EndIf                         EndIf                 EndSwitch     EndSwitch     Return $GUI_RUNDEFMSG EndFunc   ;==>WM_NOTIFY

"On the fly" ?
You mean dynamically updated when a folder is changed? (add/del/rename) :x

Yes.

Edited by Yashied, 20 January 2011 - 02:29 PM.


#4 Yashied

Yashied

    Happy in Moscow

  • MVPs
  • 2,512 posts

Posted 19 January 2011 - 11:20 PM

Deleted.

Edited by Yashied, 19 January 2011 - 11:21 PM.


#5 Beege

Beege

    Universalist

  • MVPs
  • 843 posts

Posted 19 January 2011 - 11:46 PM

Great example Yashied! Thanks for sharing.

#6 qwert

qwert

    Universalist

  • Active Members
  • PipPipPipPipPipPip
  • 499 posts

Posted 15 February 2011 - 03:48 PM

This looks like a great start to a special-purpose directory viewer that I've been thinking about. But I've never worked with Tree Views in au3 ... or anywhere else, for that matter ... so I have these questions:

Can someone point out where I would add a column for File Date? Also, what's a good method to get a File Name returned to the script if I double click on its entry?

Thanks for any help.

#7 Melba23

Melba23

    Yes, me!

  • Moderators
  • 15,387 posts

Posted 15 February 2011 - 04:09 PM

qwert,

Yashied has released an updated version of this UDF here - you may want to use that in your project instead. :)

As to TreeViews in general, you cannot add columns - you could only add the date to the filename to display. ;)

And if you look at my version of a folder treeview here you will see how to get a doubleclick to return the selected name. :idiot:

M23
StringSize - Automatically size controls to fit text - ExtMsgBox - A user customisable replacement for MsgBox

Toast - Small GUIs which pop out of the Systray - Marquee - Scrolling tickertape GUIs

Scrollbars - Automatically sized scrollbars with a single command - GUIFrame - Subdivide GUIs into many adjustable frames

GUIExtender - Extend and retract multiple sections within a GUI - NoFocusLines - Remove the dotted focus lines from buttons, sliders, radios and checkboxes

ChooseFileFolder - Single and multiple selections from specified path tree structure - - Notify - Small notifications on the edge of the display

RecFileListToArray - An alternative to _FileListToArray with user-defined include/exclude masks, maximum recursion level, sorting and displayed path options

GUIListViewEx - Insert, delete, move, drag and sort ListView items


#8 qwert

qwert

    Universalist

  • Active Members
  • PipPipPipPipPipPip
  • 499 posts

Posted 16 February 2011 - 03:24 PM

Thanks for your reply.

Over the past day, I've explored the examples you pointed to and also explored the tree view examples in help. I quickly found that I was reading too much "directory tree" into the purpose and functions of tree views.

But before I abandon my idea, I wanted to show exactly what I was trying for and ask: is this impossible in a simple script? Yashied's examples just seemed so close.

Again, thanks for any help.

Attached Thumbnails

  • Explore.PNG


#9 Melba23

Melba23

    Yes, me!

  • Moderators
  • 15,387 posts

Posted 16 February 2011 - 03:47 PM

qwert,

As I mentioned above, the only way I can see to produce a treeview like that is to concatenate the additional data to the filename and set the whole string as the item. However, I can imagine all sorts of problems getting the column spacing correct if you tried to do it that way - you would have to measure the length of the filename and then add just enough tabs to align everything. It is by no means impossible, but would add significantly to the time taken to fill the tree each time. ;)

I suggest asking Yashied in his other topic - I think he has abandoned this one - as he is far more knowledgeable about these things that I am. Sorry I cannot be of more help myself. :)

M23
StringSize - Automatically size controls to fit text - ExtMsgBox - A user customisable replacement for MsgBox

Toast - Small GUIs which pop out of the Systray - Marquee - Scrolling tickertape GUIs

Scrollbars - Automatically sized scrollbars with a single command - GUIFrame - Subdivide GUIs into many adjustable frames

GUIExtender - Extend and retract multiple sections within a GUI - NoFocusLines - Remove the dotted focus lines from buttons, sliders, radios and checkboxes

ChooseFileFolder - Single and multiple selections from specified path tree structure - - Notify - Small notifications on the edge of the display

RecFileListToArray - An alternative to _FileListToArray with user-defined include/exclude masks, maximum recursion level, sorting and displayed path options

GUIListViewEx - Insert, delete, move, drag and sort ListView items


#10 Syed23

Syed23

    Mass Spammer! - It's Me

  • Active Members
  • PipPipPipPipPipPip
  • 519 posts

Posted 26 July 2012 - 02:03 PM

This is really awesome! is there a way to use checkbox instead of folder icons? i tried by giving the exStyle but not worked may be i am using it in wrong place :( and suggestion for me?

Edited by Syed23, 26 July 2012 - 03:28 PM.

Thank you,Regards,K.Syed Ibrahim.

#11 caleb41610

caleb41610

    Adventurer

  • Active Members
  • PipPip
  • 137 posts

Posted 03 October 2012 - 12:29 PM

qwert,

As I mentioned above, the only way I can see to produce a treeview like that is to concatenate the additional data to the filename and set the whole string as the item. However, I can imagine all sorts of problems getting the column spacing correct if you tried to do it that way - you would have to measure the length of the filename and then add just enough tabs to align everything. It is by no means impossible, but would add significantly to the time taken to fill the tree each time. ;)

I suggest asking Yashied in his other topic - I think he has abandoned this one - as he is far more knowledgeable about these things that I am. Sorry I cannot be of more help myself. :)

M23


Picking one of those even-spaced ascii-art fonts would make the spacing pretty easy I would think




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users