找回密码
 加入
搜索
查看: 2781|回复: 6

多次判断多个参数时的跳转问题

[复制链接]
发表于 2008-6-24 16:14:17 | 显示全部楼层 |阅读模式
很抱歉无法让大家理解

实际情况如下:
一个对话框上有2个combo,当按确认后就要进行2次如下操作:
读取combo内的数据,然后通过一个子函数进行判断,之后正确则变量赋值,错误则根据不同的错误情况提供不同的错误提示(2个以上),错误提示时需要跳过之后的过程,并使用GUICtrlSetState($Combo_ID, $GUI_FOCUS)提示需要修改的地方。

GUICreate("",200, 100)
$cb_1=GUICtrlCreateCombo("1",13, 10, 182, 25)
$cb_2=GUICtrlCreateCombo("2",13, 39, 182, 25)
$bt_1=GUICtrlCreateButton("确定",28, 70, 64, 22)
$bt_2=GUICtrlCreateButton("退出",116, 70, 64, 24)
GUISetState()
While 1
        Switch  GUIGetMsg()
                Case $bt_1
                        $_f1 = Func1(GUICtrlRead($cb_1))
                        Switch @error
                                Case 0
                                        ;赋值
                                Case 1
                                        ToolTip("error1")
                                        GUICtrlSetState($cb_1, $GUI_FOCUS)
                                        ;==> 希望在此处跳出 Switch 继续 Case $bt_2 <==;
                                Case 2
                                        ToolTip("error1")
                                        GUICtrlSetState($cb_1, $GUI_FOCUS)
                                        ;==> 同上 <==;
                        EndSwitch
                        $_f1 = Func1(GUICtrlRead($cb_2))
                        Switch @error
                                Case 0
                                        ;赋值
                                Case 1
                                        ToolTip("error3")
                                        GUICtrlSetState($cb_2, $GUI_FOCUS)
                                Case 2
                                        ToolTip("error4")
                                        GUICtrlSetState($cb_2, $GUI_FOCUS)
                        EndSwitch
                Case $bt_2
                        Exit
        EndSwitch
WEnd
Func Func1()
EndFunc
Func Func2()
EndFunc


[ 本帖最后由 pw4321 于 2008-6-24 22:53 编辑 ]
发表于 2008-6-24 17:11:28 | 显示全部楼层
理解有点困难

你想实现什么吧?
发表于 2008-6-24 17:21:51 | 显示全部楼层
这是对楼主的意思的理解的极限了的做法,不知道大家能不能明白我写的理解了的楼主的意思.
Local $_f=11,$_f1=1,$_f2=2
Switch $_f
    Case 11
        MsgBox(0,"",11)
        Switch $_f1
            Case 1
                MsgBox(0,"",21)
;==> 希望在此处跳转到 case 12  <==;

                MsgBox(0,"",12)
            Case 2
                MsgBox(0,"",22)
        EndSwitch
        Switch $_f2
            Case 1
                MsgBox(0,"",23)
            Case 2
                MsgBox(0,"",24)
        EndSwitch
    Case 12
        
    Case 13
        MsgBox(0,"",13)
EndSwitch
 楼主| 发表于 2008-6-24 19:00:27 | 显示全部楼层
很抱歉无法让大家理解

实际情况如下:
一个对话框上有2个combo,当按确认后就要进行2次如下操作:
读取combo内的数据,然后通过一个子函数进行判断,之后正确则变量赋值,错误则根据不同的错误情况提供不同的错误提示(2个以上),错误提示时需要跳过之后的过程,并使用GUICtrlSetState($Combo_ID, $GUI_FOCUS)提示需要修改的地方。
发表于 2008-6-24 20:00:53 | 显示全部楼层
能不能这样理解楼主的意思,点击BT1后有2个计算,如果第一个计算产生错误就不进行第二个计算了?我认为加个开关变量比较合适。
GUICreate("",200, 100)
$cb_1=GUICtrlCreateCombo("1",13, 10, 182, 25)
$cb_2=GUICtrlCreateCombo("2",13, 39, 182, 25)
$bt_1=GUICtrlCreateButton("确定",28, 70, 64, 22)
$bt_2=GUICtrlCreateButton("退出",116, 70, 64, 24)
GUISetState()
dim $swch=False
While 1
        Switch  GUIGetMsg()
                Case $bt_1
                        $_f1 = Func1(GUICtrlRead($cb_1))
                        Switch @error
                                Case 0
                                        ;赋值
                                Case 1
                                        ToolTip("error1")
                                        GUICtrlSetState($cb_1, $GUI_FOCUS)
                                        $swch=True
                                        ;==> 希望在此处跳出 Switch 继续 Case $bt_2 <==;
                                Case 2
                                        ToolTip("error1")
                                        GUICtrlSetState($cb_1, $GUI_FOCUS)
                                        ;==> 同上 <==;
                        EndSwitch
                        if not $swch Then
                                $_f1 = Func1(GUICtrlRead($cb_2))
                                Switch @error
                                        Case 0
                                                ;赋值
                                        Case 1
                                                ToolTip("error3")
                                                GUICtrlSetState($cb_2, $GUI_FOCUS)
                                        Case 2
                                                ToolTip("error4")
                                                GUICtrlSetState($cb_2, $GUI_FOCUS)
                                EndSwitch
                        EndIf
                                $swch=False
                Case $bt_2
                        Exit
        EndSwitch
WEnd
Func Func1()
EndFunc
Func Func2()
EndFunc


[ 本帖最后由 顽固不化 于 2008-6-24 21:21 编辑 ]
发表于 2008-6-24 20:09:12 | 显示全部楼层
以前玩SWITCH, 不是AU3中,  总感觉不带劲, 貌似在判断数值时, 还得从大到小, 不能从小到大, 要不小的也满足条件..

现在省事我一般就用
if   then

elseif   then
...
else

endif
 楼主| 发表于 2008-6-24 20:47:10 | 显示全部楼层
原帖由 顽固不化 于 2008-6-24 20:00 发表
能不能这样理解楼主的意思,点击BT1后有2个计算,如果第一个计算产生错误就不进行第二个计算了?我认为加个开关变量比较合适。
...

办法可行
事实上我现在使用 do ... exitloop ... exitloop ... until 0 来实现,不过可读性太差,说不定过几天就忘了为什么要这么做了。
谢谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-20 14:36 , Processed in 0.074147 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表