#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <File.au3>
#include <StaticConstants.au3>
Opt('MustDeclareVars', 1)
Global $hGui, $iLbl, $iTab, $aiTabItem[5], $ahLV[5], $aColumn[7] = ['Num ', 'Name ', 'Attrib ', 'Size ', 'Modified ', 'Created ', _
'Accessed '], $aiBtn[5], $aiLbl[5][2], $aWindowsDir, $iCurrentTab, $aColor[5][2] = [[0xF0F8FF, 0x0000FF], [0xFAEBD7, 0x00008B], _
[0xFFE4B5, 0x006400], [0x7FFFD4, 0xDC143C], [0xB0C4DE, 0x4B0082]], $aTmp, $sDir, $aDir[1], $aTime, $iDirs = 0, $iFiles = 0
$aWindowsDir = _FileListToArray(@WindowsDir, '*', 2)
If @error Then Exit 13
$hGui = GUICreate('Test', 400, 400)
$iLbl = GUICtrlCreateLabel('', 10, 10, 380, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, 0xB4E1D3)
$iTab = GUICtrlCreateTab(10, 40, 380, 340)
For $i = 0 To UBound($aiTabItem) - 1
$aiTabItem[$i] = GUICtrlCreateTabItem('TabItem_' & $i)
$aiBtn[$i] = GUICtrlCreateButton('Click ' & $i, 40, 70, 80, 30)
$aiLbl[$i][0] = GUICtrlCreateLabel('Dirs: 0', 160, 75, 80, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, 0xB4E1D3)
$aiLbl[$i][1] = GUICtrlCreateLabel('Files: 0', 280, 75, 80, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetBkColor(-1, 0xB4E1D3)
$ahLV[$i] = GUICtrlCreateListView('', 20, 110, 360, 260, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
$ahLV[$i] = GUICtrlGetHandle($ahLV[$i])
_GUICtrlListView_SetBkColor($ahLV[$i], 0x00FFFF)
_GUICtrlListView_SetTextBkColor($ahLV[$i], $aColor[$i][0])
_GUICtrlListView_SetTextColor($ahLV[$i], $aColor[$i][1])
For $j = 0 To UBound($aColumn) - 1
_GUICtrlListView_AddColumn($ahLV[$i], $aColumn[$j] & $i)
Next
For $j = 0 To UBound($aColumn) - 1
_GUICtrlListView_SetColumnWidth($ahLV[$i], $j, $LVSCW_AUTOSIZE_USEHEADER)
Next
Next
GUICtrlCreateTabItem('')
GUISetState()
$iCurrentTab = Random(0, 4, 1)
GUICtrlSetState($aiTabItem[$iCurrentTab], $GUI_SHOW)
GUICtrlSetData($iLbl, 'Current TabItem: TabItem_' & $iCurrentTab)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $iTab
$iCurrentTab = GUICtrlRead($iTab)
GUICtrlSetData($iLbl, 'Current TabItem: TabItem_' & $iCurrentTab)
Case $aiBtn[$iCurrentTab]
GUISetState(@SW_DISABLE)
_GUICtrlListView_DeleteAllItems($ahLV[$iCurrentTab])
GUICtrlSetData($aiLbl[$iCurrentTab][0], 'Dirs: 0')
GUICtrlSetData($aiLbl[$iCurrentTab][1], 'Files: 0')
GUICtrlSetData($iLbl, 'Please wait...')
$sDir = @WindowsDir & '\' & $aWindowsDir[Random(1, $aWindowsDir[0], 1)] & '\'
$aTmp = _FileListToArray($sDir)
If @error Then
GUISetState(@SW_ENABLE)
GUICtrlSetData($iLbl, 'Error _FileListToArray')
ContinueLoop
EndIf
ReDim $aDir[$aTmp[0]][7]
For $i = 1 To $aTmp[0]
$aDir[$i - 1][0] = $i
$aDir[$i - 1][1] = $aTmp[$i]
$aDir[$i - 1][2] = FileGetAttrib($sDir & $aTmp[$i])
If StringInStr($aDir[$i - 1][2], 'D') Then
$iDirs += 1
$aDir[$i - 1][3] = DirGetSize($sDir & $aTmp[$i])
Else
$iFiles += 1
$aDir[$i - 1][3] = FileGetSize($sDir & $aTmp[$i])
EndIf
For $j = 0 To 2
$aDir[$i - 1][$j + 4] = StringRegExpReplace(FileGetTime($sDir & $aTmp[$i], $j, 1), '^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$', _
'$3\.$2\.$1 $4:$5:$6')
Next
Next
_GUICtrlListView_BeginUpdate($ahLV[$iCurrentTab])
_GUICtrlListView_AddArray($ahLV[$iCurrentTab], $aDir)
For $j = 0 To UBound($aColumn) - 1
_GUICtrlListView_SetColumnWidth($ahLV[$iCurrentTab], $j, $LVSCW_AUTOSIZE_USEHEADER)
Next
_GUICtrlListView_EndUpdate($ahLV[$iCurrentTab])
GUICtrlSetData($iLbl, $sDir)
GUICtrlSetData($aiLbl[$iCurrentTab][0], 'Dirs: ' & $iDirs)
GUICtrlSetData($aiLbl[$iCurrentTab][1], 'Files: ' & $iFiles)
ReDim $aDir[1]
$sDir = ''
$aTmp = 0
$iDirs = 0
$iFiles = 0
GUISetState(@SW_ENABLE)
EndSwitch
WEnd