2013-06-25 5 views
0

У меня есть код HTA, ниже которого перечислены все подпапки в определенной папке. Мой вопрос в том, что если я нажму одну из подпапок из списка, как он может автоматически создать второй список, который дает мне всю дочернюю папку в этой подпапке? и так далее, пока не будет найдена более детальная папка, последняя дочерняя папка должна перечислить все файлы в ней. Также как добавить дополнительную опцию в конце каждого списка с именем [новая папка], в котором появится всплывающее окно, позволяющее ввести имя для создания новой папки.Создать список подпапок при выборе выпадающего меню

В конце, если нажать кнопку [отправить], он откроет последнюю дочернюю папку, которую я выбираю в проводнике Windows. Я новичок в VBS, поэтому, пожалуйста, помогите


<HEAD> 
    <TITLE>K Drive Program Structure</TITLE> 
    <HTA:APPLICATION ID="Hello" 
    APPLICATIONNAME="K Drive Program Structure" 
    BORDER="Dialog" 
    CAPTION="Yes" 
    SCROLL="NO" 
    SHOWINTASKBAR="yes" 
    SINGLEINSTANCE="yes" 
    SYSMENU="Yes" 
    WINDOWSTATE="maximize"> 
</HEAD> 
<BODY> 
<SCRIPT LANGUAGE="VBScript"> 

Sub UpdateList 
    For Each opt In list.Options 
    opt.RemoveNode 
    Next 

    Set fso = CreateObject("Scripting.FileSystemObject") 
    For Each f In fso.GetFolder("K:\AppData").SubFolders 
    Set opt = document.createElement("OPTION") 
    opt.Text = f.Name 
    opt.Value = f.Path 
    list.Add(opt) 
    Next 
End Sub 
</SCRIPT> 

<H2>K Drive Structure</H2> 
<P>CUSTOMER 
<select id="list" name="list" onMouseOver="UpdateList"></select><P> 

<BR> 
<BR> 
<Input Type = "Button" Name = "btn01" VALUE = "SUBMIT"> 
<Input Type = "Button" Name = "btn02" VALUE = "CLOSE"> 
<BR> 
<BR> 

</BODY> 

Спасибо за помощь

+0

Кто-нибудь может мне помочь? – Teemo

ответ

1

Почему вы не используете Shell.BrowseForFolder метод, как я suggested? Попытка заново изобрести его в ОМТ всегда будет неудобно.

Что касается вашего вопроса, то вам нужно добавить onChange обработчик к <select> тегу:

<select id="list" name="list" onMouseOver="UpdateList" onChange="EnumSubFolders"> 
</select> 

и процедура EnumSubFolders перечислить дочерние папки:

Sub EnumSubFolders 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    For Each opt In list.options 
    If opt.selected Then 
     Set sf = fso.GetFolder(opt.value).SubFolders 
     'do stuff with sf 
     Exit For 
    End If 
    Next 
End Sub 

Вам может понадобиться применить некоторые изменения в UpdateList тоже (например, запоминание выбранного в данный момент параметра перед обновлением списка).

+0

Мне нужно время, чтобы узнать все это ..... Спасибо за помощь – Teemo

+1

Пожалуйста, избегайте комментариев «спасибо». Соответствующий способ выразить благодарность SO - это поддержать и/или [принять] (http://meta.stackexchange.com/a/5235) ответ. –