Jump to content

How to embed a FileSelectFolder into a form?


tonyh
 Share

Recommended Posts

Hi

Im new to autoit so take it easy on me.

How can i create a form with a FileSelectFolder box embeded into the form. I hope that makes sense. That is i would like a form and as part of that form I would like a FileSelectFolder as part of the form. Thats if its possible.

many thanks

Tony

Link to comment
Share on other sites

I have try to do this, but i have a problem - if someone can help me here, i think that i can solve this problem.

Here is a have-done script:

#include <GUIConstants.au3>
#include <GUITreeView.au3>
#include <File.au3>
Opt("GuiOnEventMode", 1)

$Path = _FileSelectFolder("Select Folder", "Choose needed Path:", 300, 300)

If Not @error Then MsgBox(64, "Path", "The selected path is: <" & $Path & ">")

Func _FileSelectFolder($Title, $Dialog_Text, $Width=300, $Heght=300)
    Global $IsExit = 0, $IsCancel = 0, $PathInput, $MainTreeViewID
    GUICreate($Title, $Width, $Heght, -1, -1, $WS_SYSMENU+$WS_CAPTION+$WS_SIZEBOX, $WS_EX_CONTEXTHELP)
    GUISetOnEvent(-3, "Cancel")
    
    GUICtrlCreateLabel($Dialog_Text, 10, 5)

    $ButtonOK = GUICtrlCreateButton("OK", $Width-180, $Heght-25, 70, 20)
    GUICtrlSetOnEvent(-1, "OK")
    
    $ButtonCancel = GUICtrlCreateButton("Cancel", $Width-80, $Heght-25, 70, 20)
    GUICtrlSetOnEvent(-1, "Cancel")
    
    $PathInput = GUICtrlCreateInput("", 10, $Heght-50, $Width-20)

    $MainTreeViewID = GUICtrlCreateTreeView(10, 30, $Width-20, $Heght-90, BitOr($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)

    GUISetState()

    $DrivesArr = _DrivesListToArray("all")
    If IsArray($DrivesArr) Then
        Dim $MainDriveID[$DrivesArr[0]+1], $CurrentIcon, $CurrentIcID
        For $i = 1 To $DrivesArr[0]
            $CurrentDrive = $DrivesArr[$i]
            If $CurrentDrive <> "a:" And $CurrentDrive <> "b:" Then
                $CurrentIcon = $CurrentDrive & "\" & IniRead($CurrentDrive & "\Autorun.inf", "Autorun", "Icon", "")
                $CurrentIcID = 0
            EndIf
            If Not FileExists($CurrentIcon) Then
                $CurrentIcon = "shell32.dll"
                $CurrentIcID = 8
            EndIf
            $MainDriveID[$i] = GUICtrlCreateTreeViewItem(StringUpper($CurrentDrive) & "\", $MainTreeViewID)
            GUICtrlSetOnEvent(-1, "GetText")
            
            If $CurrentDrive = "a:" Or $CurrentDrive = "b:" Then
                GUICtrlSetImage(-1, "shell32.dll", 6, 0)
            ElseIf DriveGetType($CurrentDrive) = "CDROM" Then
                GUICtrlSetImage(-1, "shell32.dll", 11, -1)
            Else
                GUICtrlSetImage(-1, StringStripWS($CurrentIcon, 3), $CurrentIcID, -1)
            EndIf
            
            If $CurrentDrive <> "a:" And $CurrentDrive <> "b:" Then
                $DirsArr = _FileListToArray($CurrentDrive, "*", 2)
                If IsArray($DirsArr) Then
                    For $j = 1 To $DirsArr[0]
                        $CurrentDir = $DirsArr[$j]
                        GUICtrlCreateTreeViewItem($CurrentDir, $MainDriveID[$i])
                        GUICtrlSetOnEvent(-1, "GetText")
                        _GUICtrlTreeViewSetIcon($MainTreeViewID, -1, "shell32.dll", 4)
                    Next
                EndIf
            EndIf
        Next
    EndIf

    While $IsExit = 0
        Sleep(10)
    WEnd
    $Path = StringReplace(_GUICtrlTreeViewGetTree($MainTreeViewID, "\"), "\\", "\")
    GUIDelete()
    If $IsCancel = 1 Then
        SetError(1)
        Return ""
    Else
        Return $Path
    EndIf
EndFunc

Func GetText()
    GUICtrlSetData($PathInput, GUICtrlRead(@GUI_CtrlId, 1))
EndFunc

Func OK()
    Global $IsExit = 1
EndFunc

Func Cancel()
    Global $IsExit = 1, $IsCancel = 1
EndFunc

Func Quit()
    Exit
EndFunc

Func _DrivesListToArray($Type)
    $DrivesArr = DriveGetDrive($Type)
    If IsArray($DrivesArr) Then
        Dim $DrivesListArr[$DrivesArr[0]+1]
        $DrivesListArr[0] = $DrivesArr[0]
        For $iDrive = 1 To $DrivesArr[0]
            $CurrentDrive = $DrivesArr[$iDrive]
            $DrivesListArr[$iDrive] = $CurrentDrive
        Next
    EndIf
    Return $DrivesListArr
EndFunc
Edited by MsCreatoR

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

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...