pw4321 发表于 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
        SwitchGUIGetMsg()
                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 编辑 ]

skyfree 发表于 2008-6-24 17:11:28

:face (13): 理解有点困难

你想实现什么吧?

pcbar 发表于 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

pw4321 发表于 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
        SwitchGUIGetMsg()
                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 编辑 ]

llztt 发表于 2008-6-24 20:09:12

以前玩SWITCH, 不是AU3中,总感觉不带劲, 貌似在判断数值时, 还得从大到小, 不能从小到大, 要不小的也满足条件..

现在省事我一般就用
if   then

elseif   then
...
else

endif

pw4321 发表于 2008-6-24 20:47:10

原帖由 顽固不化 于 2008-6-24 20:00 发表
能不能这样理解楼主的意思,点击BT1后有2个计算,如果第一个计算产生错误就不进行第二个计算了?我认为加个开关变量比较合适。
...
办法可行
事实上我现在使用 do ... exitloop ... exitloop ... until 0 来实现,不过可读性太差,说不定过几天就忘了为什么要这么做了。
谢谢!
页: [1]
查看完整版本: 多次判断多个参数时的跳转问题