Jump to content

Has anyone written a simpler alternative to "FileOpenDialog"?


Rick
 Share

Recommended Posts

Ok, I'm stuck again! How do i find the string of the files thats been selected, so i can then act on them?

Have a look the "AutoIt UDFs Help". Under "_GUICtrlListViewGetItemText " you will find an example for that what you are looking for (Get Selected).

HTH, Reinhard

Edited by ReFran
Link to comment
Share on other sites

ok, everythings working fine, but how can i get it sort on loading of a particular column??

I've looked at the help files, but it doesnt seem obvious

Edited by Rick

Who needs puzzles when we have AutoIt!!

Link to comment
Share on other sites

#include <GuiConstants.au3>
#include <GuiListView.au3>

opt('MustDeclareVars', 1)
Dim $listview, $Btn_Exit, $msg, $Status, $Btn_Insert, $ret, $Input_Index, $Main_GUI
Global $select_all = 0
HotKeySet("^a", "_SetSelectAll"); Ctrl+a Toggles selectin all
; Ctrl + Click selects multple items or Shift + Click

$Main_GUI = GUICreate("Files", 392, 322)

$listview = GUICtrlCreateListView("File|Size|Type|Date Created|Date Modified", 40, 30, 310, 149, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)

_GUICtrlListViewSetColumnWidth ($listview, 0, 75)
_GUICtrlListViewSetColumnWidth ($listview, 1, 75)
_GUICtrlListViewSetColumnWidth ($listview, 2, 75)
_GUICtrlListViewSetColumnWidth ($listview, 3, 75)
_GUICtrlListViewSetColumnWidth ($listview, 4, 75)
$Btn_Exit = GUICtrlCreateButton("Exit", 300, 260, 70, 30)
GUISetState()
GUISetState(@SW_LOCK)
_PopulateListView($listview)
Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount ($listview) ]
_GUICtrlListViewSort ($listview, $B_DESCENDING, 2); let's sort on type
GUISetState(@SW_UNLOCK)
While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE Or $msg = $Btn_Exit
            ExitLoop
        Case $msg = $listview
       ; sort the list by the column header clicked on
            _GUICtrlListViewSort ($listview, $B_DESCENDING, GUICtrlGetState($listview))
        Case Else
            ConsoleWrite($select_all & @LF)
            If $select_all = 1 Then
                _GUICtrlListViewSetItemSelState ($listview, -1)
            ElseIf $select_all = 2 Then
                _GUICtrlListViewSetItemSelState ($listview, -1, 0)
                $select_all = 0
            EndIf
    EndSelect
WEnd
Exit

Func _PopulateListView(ByRef $listview)
    Local $startdir, $var, $search, $file, $item, $attrib, $time
    $startdir = @MyDocumentsDir
    
    $var = FileSelectFolder("Choose a folder.", $startdir)
    If $var <> "" Then
        FileChangeDir($var)
   ; Shows the filenames of all files in the current directory.
        $search = FileFindFirstFile("*.*")
        
   ; Check if the search was successful
        If $search = -1 Then
            Return
        EndIf
        
        While 1
            $file = FileFindNextFile($search)
            If @error Then ExitLoop
            $item = $file & "|"
            $attrib = FileGetAttrib($file)
            If Not @error Then
                If StringInStr($attrib, "D") Then
                    $item = $file & "||Directory|"
                Else
                    $item = $file & "|" & FileGetSize($file) & " bytes" & "|File|"
                EndIf
            EndIf
            $time = FileGetTime($file, 1)
            
            If Not @error Then
                $item = $item & $time[0] & "/" & $time[1] & "/" & $time[2] & " "
                If Int($time[3]) > 12 Then
                    $item = $item & $time[3] - 12 & ":" & $time[4] & " PM|"
                Else
                    $item = $item & $time[3] & ":" & $time[4] & " AM|"
                EndIf
            EndIf
            $time = FileGetTime($file)
            If Not @error Then
                $item = $item & $time[0] & "/" & $time[1] & "/" & $time[2] & " "
                If Int($time[3]) > 12 Then
                    $item = $item & $time[3] - 12 & ":" & $time[4] & " PM"
                Else
                    $item = $item & $time[3] & ":" & $time[4] & " AM"
                EndIf
            EndIf
            GUICtrlCreateListViewItem($item, $listview)
        WEnd
        
   ; Close the search handle
        FileClose($search)
        
    EndIf
EndFunc ;==>_PopulateListView

Func _SetSelectAll()
    If $select_all = 0 Then
        $select_all = 1
    ElseIf $select_all = 1 Then
        $select_all = 2
    EndIf
EndFunc ;==>_SetSelectAll

Edited by gafrost

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...