'File source from Holyguard.net
' custom component programed by jordi Ramos, bug clear 2004
' Use QFileListV.Directory = your folder for shearch
' QFileListV.Populate = populate list View with files
$TYPECHECK On
$INCLUDE "RapidQ.inc"
TYPE SHFILEINFO
hIcon AS LONG ' out: icon
iIcon AS INTEGER ' out: icon index
dwAttributes AS DWORD ' out: SFGAO_ flags
szDisplayName AS STRING * MAX_PATH ' out: display name (or path)
szTypeName AS STRING * 80 ' out: type name
END TYPE
CONST MAX_PATH = 260
CONST SHGFI_DISPLAYNAME = &H200
CONST SHGFI_TYPENAME = &H400
CONST SHGFI_SYSICONINDEX = &H4000
CONST SHGFI_LARGEICON = &H0
CONST SHGFI_SMALLICON = &H1
CONST SHGFI_ICON = &H100
CONST LVM_FIRST = &H1000
CONST LVM_SETIMAGELIST = (LVM_FIRST + 3)
CONST LVM_GETBKIMAGEA = (LVM_FIRST + 69)
CONST LVM_SETITEMPOSITION = (LVM_FIRST + 15)
CONST LVM_SETBKIMAGEA = (LVM_FIRST + 68)
CONST LVBKIF_SOURCE_URL = 2
CONST LVBKIF_STYLE_NORMAL = &H0
CONST LVSIL_NORMAL = 0
CONST LVSIL_SMALL = 1
DECLARE FUNCTION SHGetFileInfo LIB "shell32.dll" ALIAS "SHGetFileInfoA" _
(pszPath AS STRING, _
dwFileAttributes AS LONG, _
psfi AS SHFILEINFO, _
cbFileInfo AS LONG, _
uFlags AS LONG) AS DWORD
DECLARE FUNCTION DestroyIcon LIB "user32" ALIAS "DestroyIcon" _
(ByVal hIcon AS LONG) AS LONG
DIM FI AS SHFILEINFO
TYPE QFileListV EXTENDS QLISTVIEW
PUBLIC:
Directory AS STRING
FileSpec AS STRING
FileAttribute AS LONG
ImgList AS QIMAGELIST
SUB Populate
DIM himlLarge AS DWORD
DIM himlSmall AS DWORD
DIM FileName AS STRING
DIM a AS INTEGER
a = 0
himlLarge = SHGetFileInfo("c:\", 0, FI, SIZEOF(FI), SHGFI_SYSICONINDEX OR SHGFI_LARGEICON)
himlSmall = SHGetFileInfo("c:\", 0, FI, SIZEOF(FI), SHGFI_SYSICONINDEX OR SHGFI_SMALLICON)
sendmessage This.handle, LVM_SETIMAGELIST, LVSIL_NORMAL, himlLarge
sendmessage This.handle, LVM_SETIMAGELIST, LVSIL_SMALL, himlSmall
This.Clear
This.ClearColumns
' change this line for put your lenguage
This.AddColumns "Nombre","Tamaño","Tipo","Nodificado"
IF RIGHT$(This.Directory,1)<> "\" THEN This.Directory = This.Directory +"\"
FileName = DIR$(This.Directory + This.FileSpec,This.FileAttribute)
WHILE LEN(FileName)>0
SHGetFileInfo(This.Directory + FileName, 0, FI, SIZEOF(FI), SHGFI_DISPLAYNAME OR SHGFI_TYPENAME OR SHGFI_ICON)
This.AddItems FI.szDisplayName
This.Item(a).ImageIndex = FI.iIcon
This.AddSubItem a,STR$(FileRec.Size)
This.AddSubItem a,FI.szTypeName
This.AddSubItem a,FileRec.Date + " " + FileRec.Time
DestroyIcon FI.hIcon
a++
FileName = DIR$
WEND
END SUB
CONSTRUCTOR
Directory = CURDIR$ ' Current Dir
FileSpec = "*.*" ' All Files
FileAttribute = 0 ' Only Files, See Documentation for Dir$ attributes
ViewStyle = vsIcon ' Show large Icons
SortType = 2 ' Sort by name
END CONSTRUCTOR
END TYPE
'-------------------------------------------example for use----------------------------
' Copy and paste into your program
DECLARE SUB mnuArchivoSalir_Click (Sender AS QMENUITEM)
DECLARE SUB mnuVerIconoGrande_Click (Sender AS QMENUITEM)
DECLARE SUB mnuVerIconoPequeño_Click (Sender AS QMENUITEM)
DECLARE SUB mnuVerDetalles_Click (Sender AS QMENUITEM)
DECLARE SUB ChangeDirectory
CREATE Form AS QFORM
CAPTION = "Form1"
Width = 500
Height = 500
Center
CREATE mnuMain AS QMAINMENU
CREATE mnuArchivo AS QMENUITEM
CAPTION = "&Archivo"
Checked = 0
Enabled = 1
Visible = 1
CREATE mnuArchivoSalir AS QMENUITEM
CAPTION = "&Salir"
Checked = 0
Enabled = 1
Visible = 1
onclick = mnuArchivoSalir_Click
END CREATE
END CREATE
CREATE mnuVer AS QMENUITEM
CAPTION = "&Ver"
Checked = 0
Enabled = 1
Visible = 1
CREATE mnuVerIconoGrande AS QMENUITEM
CAPTION = "Iconos &grandes"
Checked = 0
Enabled = 1
Visible = 1
onclick = mnuVerIconoGrande_Click
END CREATE
CREATE mnuVerIconoPequeño AS QMENUITEM
CAPTION = "Iconos &pequeños"
Checked = 0
Enabled = 1
Visible = 1
onclick = mnuVerIconoPequeño_Click
END CREATE
CREATE mnuVerDetalles AS QMENUITEM
CAPTION = "&Detalles"
Checked = 0
Enabled = 1
Visible = 1
onclick = mnuVerDetalles_Click
END CREATE
END CREATE
END CREATE
CREATE DirTree AS QDIRTREE
InitialDir = "C:"
Width = Form.ClientWidth
Height = Form.ClientHeight
OnChange = ChangeDirectory
align = alLeft
Width = 200
END CREATE
CREATE FileListV AS QFileListV
align = alClient
Directory = "C:"
ViewStyle = vsIcon
' ViewStyle = vsSmallIcon
' ViewStyle = vsReport
Populate
END CREATE
END CREATE
'Insert your initialization code here
Form.SHOWMODAL
'--------- Subroutines ---------
SUB ChangeDirectory
FileListV.Directory = DirTree.Directory
FileListV.Populate
END SUB
SUB mnuArchivoSalir_Click (Sender AS QMENUITEM)
END
END SUB
SUB mnuVerIconoGrande_Click (Sender AS QMENUITEM)
FileListV.ViewStyle = vsIcon
END SUB
SUB mnuVerIconoPequeño_Click (Sender AS QMENUITEM)
FileListV.ViewStyle = vsSmallIcon
END SUB
SUB mnuVerDetalles_Click (Sender AS QMENUITEM)
FileListV.ViewStyle = vsReport
END SUB