(已解决)能不能选择哪个就执行哪个函数?
本帖最后由 yarsye 于 2010-9-4 13:25 编辑#include <GUIConstantsEx.au3>
Opt('MustDeclareVars', 1)
Example()
Func Example()
Local $msg
GUICreate("My GUI combo"); will create a dialog box that when displayed is centered
GUICtrlCreateCombo("item1", 10, 10) ; create first item
GUICtrlSetData(-1, "item2|item3", "item3") ; add other item snd set a new default
GUISetState()
; Run the GUI until the dialog is closed
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $label0;x
Exit
Case item2 ;Start
item2()
EndSwitch
WEnd
EndFunc ;==>Example
Func item2()
MsgBox(0,1,1)
EndFunc 表驱动Call函数。 P版的理解能力很强大!
call也不行吧,控件ID与名称没有关系。
我估计LZ是想省事点。
要么自己定义ID与名称间的对应关系,到时可以直接Call或Execute.
要么还是乖乖的写吧。
两者的工作量其实是差不多的,所以我建议LZ还是选后者。 还是用ID试下吧 祝我好运 GUICreate('', 220, 190)
$Combo1 = GUICtrlCreateCombo('', 20, 10, 180, 25, 0x0003)
GUICtrlSetData(-1, '请选择|a|b|c', '请选择')
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Combo1
Call(GUICtrlRead(3))
EndSwitch
WEnd
Func a()
MsgBox(0, 0, '执行a()')
EndFunc ;==>a
Func b()
MsgBox(0, 0, '执行b()')
EndFunc ;==>b
Func c()
MsgBox(0, 0, '执行c()')
EndFunc ;==>c 本帖最后由 afan 于 2010-9-4 10:41 编辑
GUICreate('', 220, 190)
$Combo1 = GUICtrlCreateCombo('', 20, 10, 180, 25, 0x0003)
GUICtrlSetData(-1, '请选择|a|b|c', '请选择')
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Combo1
Go(GUICtrlRead(3))
EndSwitch
WEnd
Func Go($Name)
Switch $Name
Case 'a'
MsgBox(0, 0, '执行a')
Case 'b'
MsgBox(0, 0, '执行b')
Case 'c'
MsgBox(0, 0, '执行c')
EndSwitch
EndFunc ;==>Go 回复 6# afan #include <GUIConstantsEx.au3>
Opt('MustDeclareVars', 1)
Example()
Func Example()
Local $msg , $Combo ,$a
GUICreate("My GUI combo"); 创建一个对话框,并居中显示
$Combo = GUICtrlCreateCombo("item1", 10, 10) ; 创建一个组合列表框(ComboBox)控件
GUICtrlSetData($Combo , "item2|item3", "item3") ; 在列表框中添加新的项目,并设置一个新的默认值
GUISetState()
$a = GUICtrlRead($Combo)
;~MsgBox(0,1,$a)
; 运行界面,直到窗口被关闭
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
If $a = "item2" Then MsgBox(0,1,1,5)
WEnd
EndFunc ;==>Example为什么这样不行?如果我用GUICtrlRead($Combo)代替$a的话 可以了 但是新问题又出现了 每次我一点击下拉菜单 就弹出来 不是我要的效果选择item2 才出msg
请问 老大 这该如何解决?纠结中 回复 6# afan
对了 你代码Highlight是怎么用出来的? 高亮显示好帅啊 GUICtrlRead($Combo) 没在循环中
帖子工具栏右边有个A 510709746回复 9# afan #include <GUIConstantsEx.au3>#include <GUIConstantsEx.au3>
Opt('MustDeclareVars', 1)
Example()
Func Example()
Global $Checkbox_Name_1 = "Checkbox1"
Global $Checkbox_Name_2 = "Checkbox2"
Global $Checkbox_Name_3 = "Checkbox3"
Global $Checkbox1, $Checkbox2, $Checkbox3
Local $msg, $Combo, $a
GUICreate("My GUI combo") ; 创建一个对话框,并居中显示
$Combo = GUICtrlCreateCombo("item1", 10, 10) ; 创建一个组合列表框(ComboBox)控件
GUICtrlSetData($Combo, "item2|item3", "item3") ; 在列表框中添加新的项目,并设置一个新的默认值
$Checkbox1 = GUICtrlCreateCheckbox($Checkbox_Name_1, 112, 232, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox($Checkbox_Name_2, 112, 312, 97, 17)
$Checkbox3 = GUICtrlCreateCheckbox($Checkbox_Name_3, 112, 352, 97, 17)
GUISetState()
$a = GUICtrlRead($Combo)
;~MsgBox(0,1,$a)
; 运行界面,直到窗口被关闭
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
If GUICtrlRead($Combo) = "item2" Then GUICtrlSetState($Checkbox3, $GUI_DISABLE)
WEnd
EndFunc ;==>Example其实我想要的是GUICtrlRead($Combo) = "item2" Then GUICtrlSetState($Checkbox3, $GUI_DISABLE)
只要一点击下拉菜单 checkbox3 就disable了 而此时我再点回去已经不行了
这样症状还有得救吗? #include <GUIConstantsEx.au3>
;~ Opt('MustDeclareVars', 1)
Global $Checkbox_Name_1 = "Checkbox1"
Global $Checkbox_Name_2 = "Checkbox2"
Global $Checkbox_Name_3 = "Checkbox3"
Global $Checkbox1, $Checkbox2, $Checkbox3
Global $msg, $Combo, $a
Example()
Func Example()
GUICreate("My GUI combo") ; 创建一个对话框,并居中显示
$Combo = GUICtrlCreateCombo("item1", 10, 10) ; 创建一个组合列表框(ComboBox)控件
GUICtrlSetData($Combo, "item2|item3", "item3") ; 在列表框中添加新的项目,并设置一个新的默认值
$Checkbox1 = GUICtrlCreateCheckbox($Checkbox_Name_1, 112, 232, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox($Checkbox_Name_2, 112, 312, 97, 17)
$Checkbox3 = GUICtrlCreateCheckbox($Checkbox_Name_3, 112, 352, 97, 17)
GUISetState()
$a = GUICtrlRead($Combo)
;~MsgBox(0,1,$a)
; 运行界面,直到窗口被关闭
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Combo
Go(GUICtrlRead(3))
EndSwitch
WEnd
EndFunc ;==>Example
Func Go($Name)
Switch $Name
Case 'item1'
GUICtrlSetState($Checkbox1, $GUI_DISABLE)
GUICtrlSetState($Checkbox2, $GUI_ENABLE)
Case 'item2'
GUICtrlSetState($Checkbox2, $GUI_DISABLE)
GUICtrlSetState($Checkbox1, $GUI_ENABLE)
Case 'item3'
GUICtrlSetState($Checkbox3, $GUI_DISABLE)
EndSwitch
EndFunc ;==>Go回复 10# yarsye
好像这样就可以了 晕!被我自己征服了 还是不行 checkbox会一直不停的在闪 这又是个问题 回复 6# afan Func Go($Name)
Switch $Name
Case 'item1'
GUICtrlSetState($Checkbox1, $GUI_DISABLE)
GUICtrlSetState($Checkbox2, $GUI_ENABLE)
Case 'item2'
GUICtrlSetState($Checkbox2, $GUI_DISABLE)
GUICtrlSetState($Checkbox1, $GUI_ENABLE)
Case 'item3'
GUICtrlSetState($Checkbox3, $GUI_DISABLE)
EndSwitch
EndFunc ;==>Go
能不能让checkbox不闪AND选择item1后checkbox就消失? 回复 13# yarsye
老大 你那个高亮代码不会是一行一行复制进去的吧? 你也算是老会员了吧,例子都给你了两个,不会稍微变通下吗…
#include <GUIConstantsEx.au3>
Global $Checkbox_Name_1 = "Checkbox1"
Global $Checkbox_Name_2 = "Checkbox2"
Global $Checkbox_Name_3 = "Checkbox3"
Global $Checkbox1, $Checkbox2, $Checkbox3, $Combo, $Name, $nMsg
GUICreate("My GUI combo") ; 创建一个对话框,并居中显示
$Combo = GUICtrlCreateCombo("item1", 10, 10) ; 创建一个组合列表框(ComboBox)控件
GUICtrlSetData($Combo, "item2|item3", "item3") ; 在列表框中添加新的项目,并设置一个新的默认值
$Checkbox1 = GUICtrlCreateCheckbox($Checkbox_Name_1, 112, 232, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox($Checkbox_Name_2, 112, 312, 97, 17)
$Checkbox3 = GUICtrlCreateCheckbox($Checkbox_Name_3, 112, 352, 97, 17)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Combo
Go(StringRight(GUICtrlRead($Combo), 1))
EndSwitch
WEnd
Func Go($Name)
For $i = 1 To 3
If $Name = $i Then
GUICtrlSetState(Eval('Checkbox' & $i), $GUI_DISABLE)
Else
GUICtrlSetState(Eval('Checkbox' & $i), $GUI_ENABLE)
EndIf
Next
EndFunc ;==>Go
页:
[1]
2