Posts: 1,000
Threads: 253
Joined: Feb 2008
How would I go about populating a combo list with the file names in a folder?
Thanks.
Posts: 11,926
Threads: 138
Joined: Dec 2002
This example shows two ways. The first combo is populated before showing dialog. Another combo - when you click the v arrow in it.
Function Dialog53
\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages
str controls = "3 4"
str cb3 cb4
Dir d
foreach(d "$Desktop$\*" FE_Dir)
,cb3.addline(d.FileName)
if(!ShowDialog("Dialog53" &Dialog53 &controls)) ret
;BEGIN DIALOG
;0 "" 0x90C80A44 0x100 0 0 223 134 "Dialog"
;1 Button 0x54030001 0x4 120 116 48 14 "OK"
;2 Button 0x54030000 0x4 170 116 48 14 "Cancel"
;3 ComboBox 0x54230243 0x0 6 8 212 213 ""
;4 ComboBox 0x54230243 0x0 6 30 212 213 ""
;END DIALOG
;DIALOG EDITOR: "" 0x2020105 "" "" ""
ret
;messages
sel message
,case WM_INITDIALOG
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case CBN_DROPDOWN<<16|3
,int hcb=id(4 hDlg)
,SendMessage hcb CB_RESETCONTENT 0 0
,Dir dd
,foreach(dd "$Desktop$\*" FE_Dir)
,,SendMessage hcb CB_ADDSTRING 0 dd.FileName
,
,case IDOK
,case IDCANCEL
ret 1
Posts: 1,000
Threads: 253
Joined: Feb 2008
I thought I saw something on this before, but now I can't find it...How do I make a combo box dependent on the selection of another combo?
Basically I want the first combo to be the folders. The second dialog is to be populated with the files in that selected folder.
In advance...How do I assign the selected file in the second combo to a variable?
\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages
str controls = "3 4"
str cb3 cb4
cb3="&Folder 1[]Folder 2[]Folder 3[]etc..."
if(!ShowDialog("DependentCombo" &DependentCombo &controls)) ret
;BEGIN DIALOG
;0 "" 0x90C80A44 0x100 0 0 223 134 "Dialog"
;1 Button 0x54030001 0x4 120 116 48 14 "OK"
;2 Button 0x54030000 0x4 170 116 48 14 "Cancel"
;3 ComboBox 0x54230243 0x0 6 8 212 213 ""
;4 ComboBox 0x54230243 0x0 6 30 212 213 ""
;END DIALOG
;DIALOG EDITOR: "" 0x2020105 "" "" ""
Dir d
foreach(d "$Desktop$\*" FE_Dir)
,cb3.addline(d.FileName)
ret
;messages
sel message
,case WM_INITDIALOG
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case CBN_DROPDOWN<<16|3
,int hcb=id(4 hDlg)
,SendMessage hcb CB_RESETCONTENT 0 0
,Dir dFolder
,foreach(dFolder "$Desktop$\*" FE_Dir)
,,SendMessage hcb CB_ADDSTRING 0 dFolder.FileName
,case IDOK
,case IDCANCEL
ret 1
Posts: 11,926
Threads: 138
Joined: Dec 2002
\Dialog_Editor
function# hDlg message wParam lParam
if(hDlg) goto messages
str controls = "3 4"
str cb3 cb4
Dir d
foreach(d "$Desktop$\*" FE_Dir 1)
,cb3.addline(d.FileName(1))
if(!ShowDialog("DependentCombo" &DependentCombo &controls)) ret
cb4.ltrim("1234567890 ") ;;remove selected item index
out cb4
;BEGIN DIALOG
;0 "" 0x90C80A44 0x100 0 0 223 134 "Dialog"
;1 Button 0x54030001 0x4 120 116 48 14 "OK"
;2 Button 0x54030000 0x4 170 116 48 14 "Cancel"
;3 ComboBox 0x54230243 0x0 6 8 212 213 ""
;4 ComboBox 0x54230241 0x0 6 30 212 86 ""
;END DIALOG
;DIALOG EDITOR: "" 0x2020105 "" "" ""
ret
;messages
sel message
,case WM_INITDIALOG
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case CBN_SELENDOK<<16|3 ;;combo 3 item selected
,;get selected item text
,str s
,CB_GetItemText(lParam CB_SelectedItem(lParam) s)
,;enum files in selected folder and populate combo 4
,int hcb=id(4 hDlg)
,SendMessage hcb CB_RESETCONTENT 0 0
,s+"\*"
,Dir dFolder
,foreach(dFolder s FE_Dir)
,,SendMessage hcb CB_ADDSTRING 0 dFolder.FileName(1)
,
,case IDOK
,case IDCANCEL
ret 1
Posts: 1,000
Threads: 253
Joined: Feb 2008
Posts: 1,271
Threads: 399
Joined: Mar 2003
|