2013-06-19 2 views
1

Пожалуйста, помогите мне в том, как создать список, возможно, из списка arrayList. Поле ввода является источником папки, и все его png-файлы будут в списке массива и отображаться в GU. ThanksСоздать список файлов из исходной папки

#include <GuiConstantsEx.au3> 
#include <File.au3> 
#include <Array.au3> 

;GUI 
GUICreate("Automation", 300, 500) 
$sourceFolder = GUICtrlCreateInput ("Source Folder" , 10, 10,280, 20) 
$add = GUICtrlCreateButton("Add", 10, 35, 75, 20) 
$mylist = GUICtrlCreateList("", 10, 60, 280, 300) 

$sourceFolder = ControlGetText("Automation", "", "Edit1") 
Local $FileList = _FileListToArray($sourceFolder, "*.png") 


    $msg = 0 
    While $msg 
     $msg = GUIGetMsg() 
     Select 
      Case $msg = $add 
       GUICtrlSetData($mylist,$FileList) 
       Exit 
     EndSelect 
    WEnd 

If $sourceFolder > 1 Then 
    If @error = 1 Then 
     MsgBox(0, "", "No Folders Found.") 
     Exit 
    EndIf 
    If @error = 4 Then 
     MsgBox(0, "", "No Files Found.") 
     Exit 
    EndIf 
    $arrayFileList = _ArrayDisplay($FileList) 
EndIf 



; GUI MESSAGE LOOP 
GUISetState(@SW_SHOW) 
While 1 
    Switch GUIGetMsg() 
     Case $GUI_EVENT_CLOSE 
      Exit 

    EndSwitch 
WEnd 

ответ

2

В вашем коде много проблем.

  • 2 сообщение петли очень плохая практика
  • Первый цикл обработки сообщений не запускается, потому что у вас есть While $msg и установить $msg на 0 линии раньше.
  • Вы читаете управление исходной папкой до первого цикла сообщений, поэтому оно всегда будет "Source Folder", а не в каталоге, который вы хотите.
  • Даже если первый цикл сообщений действительно запущен, графический интерфейс еще не будет показан.

С точки зрения того, что вы хотите сделать: это просто для ... Следующий цикл над возвращаемым массивом.

#include <GuiConstantsEx.au3> 
#include <File.au3> 
#include <Array.au3> 

;GUI 
GUICreate("Automation", 300, 500) 
$sourceFolder = GUICtrlCreateInput("Source Folder", 10, 10, 280, 20) 
$add = GUICtrlCreateButton("Add", 10, 35, 75, 20) 
$mylist = GUICtrlCreateList("", 10, 60, 280, 300) 


GUISetState(@SW_SHOW) 

While 1 
    $msg = GUIGetMsg() 
    Switch $msg 
     Case $add 
      $sFolder = ControlGetText("Automation", "", "Edit1") 
      Local $FileList = _FileListToArray($sFolder, "*.*") 

      If @error = 1 Then 
       MsgBox(0, "", "No Folders Found.") 
       Exit 
      EndIf 
      If @error = 4 Then 
       MsgBox(0, "", "No Files Found.") 
       Exit 
      EndIf 

      For $i = 1 To $FileList[0] 
       GUICtrlSetData($mylist, $FileList[$i]) 
      Next 
     Case $GUI_EVENT_CLOSE 
      ExitLoop 
    EndSwitch 
WEnd 
Смежные вопросы