找回密码
 加入
搜索
查看: 1637|回复: 4

[GUI管理] [已解决]Radio 控件執行順序

[复制链接]
发表于 2012-4-26 12:08:07 | 显示全部楼层 |阅读模式
本帖最后由 jericho0711 于 2012-4-26 18:16 编辑

不知道為什麼,把Radio加上顏色後,執行的順序就不對,但是只要把GUICtrlCreateLabel這段刪除了,執行的順序就正常了,有沒有高手可以幫忙一下的...
   GUICreate("Form",500,400)
   Local $Radio[5], $L = 0
   $Radio[0] = GUICtrlCreateRadio("", 25, 80, 15,15)
   GUICtrlCreateLabel("1", 42, 80, 220)
   GUICtrlSetColor(-1, 0x8B0000)
   $Radio[1] = GUICtrlCreateRadio("", 25, 80+35, 15,15)
   GUICtrlCreateLabel("2", 42, 80+35, 220)
   GUICtrlSetColor(-1, 0x8B0000)
   $Radio[2] = GUICtrlCreateRadio("", 25, 80+35*2, 15, 15)
   GUICtrlCreateLabel("3", 42, 80+35*2, 220, 20)
   GUICtrlSetColor(-1, 0x8B0000)
   
   $Button3 = GUICtrlCreateButton("START", 170, 340, 150, 40)

   GuiCtrlSetState($Radio[$L], 1)
   GUISetState()

   While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                 Case -3
            Exit
         Case $Radio[0] To $Radio[2]
            $L = $nMsg - 3
         Case $Button3
            _Go1($L)        
      EndSwitch
   WEnd

Func _Go1($iX)
        Switch $iX
                Case 0
                                MsgBox(0,"","1")
                Case 1
                                MsgBox(0,"","2")
                Case 2
                                MsgBox(0,"","3")                                                        
                Case 3
                                MsgBox(0,"","4")                                
                Case 4
                                MsgBox(0,"","5")                        
        EndSwitch
EndFunc

评分

参与人数 1金钱 +15 收起 理由
afan + 15 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2012-4-26 13:29:28 | 显示全部楼层

   $form1 = GUICreate("Form",500,400);;;
   Local $Radio[5], $L = 0
   $Radio[0] = GUICtrlCreateRadio("", 25, 80, 15,15);;;
   $lable1 = GUICtrlCreateLabel("1", 42, 80, 220);;;
   GUICtrlSetColor(-1, 0x8B0000)
   $Radio[1] = GUICtrlCreateRadio("", 25, 80+35, 15,15);;;
   $lable2 = GUICtrlCreateLabel("2", 42, 80+35, 220);;;
   GUICtrlSetColor(-1, 0x8B0000)
   $Radio[2] = GUICtrlCreateRadio("", 25, 80+35*2, 15, 15);;;
   $lable3 = GUICtrlCreateLabel("3", 42, 80+35*2, 220, 20);;;
   GUICtrlSetColor(-1, 0x8B0000)
   
   $Button3 = GUICtrlCreateButton("START", 170, 340, 150, 40);;

   GuiCtrlSetState($Radio[$L], 1)
   GUISetState()

$msg = "$form1 的控件id:  " & $form1 & @CRLF
$msg &= "$Radio[0] 的控件id:  " & $Radio[0] & @CRLF
$msg &= "$lable1 的控件id:  " & $lable1 & @CRLF
$msg &= "$Radio[1] 的控件id:  " & $Radio[1] & @CRLF
$msg &= "$lable2 的控件id:  " & $lable2 & @CRLF
$msg &= "$Radio[2] 的控件id:  " & $Radio[2] & @CRLF
$msg &= "$label2 的控件id:  " & $lable3 & @CRLF
$msg &= "$Button3 的控件id:  " & $Button3 & @CRLF
MsgBox(0, "debug info", $msg);;;;把这些控件id输出来看看你就明白怎么回事了

   While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                 Case -3
            Exit
         Case $Radio[0] To $Radio[2]
            $L = $nMsg - 3;;;
         Case $Button3
            _Go1($L)        
      EndSwitch
   WEnd

Func _Go1($iX)
        Switch $iX
                Case 0
                                MsgBox(0,"","1")
                Case 1
                                MsgBox(0,"","2")
                Case 2
                                MsgBox(0,"","3")                                                        
                Case 3
                                MsgBox(0,"","4")                                
                Case 4
                                MsgBox(0,"","5")                        
        EndSwitch
EndFunc

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2012-4-26 13:49:01 | 显示全部楼层
原來是因為加上GUICtrlCreateLabel這一行,控行id不同了,難怪整個輸出的值都不同了,請問一下有辦法去改嗎,還是只能把GUICtrlCreateLabel這個控件拿掉,小弟對這種控件真的很不內行...
发表于 2012-4-26 16:17:41 | 显示全部楼层
回复 3# jericho0711
把建立控件的顺序调一下就能达到你预期的设想了!
我顺便按你的思路优化了代码, 看起来会简洁很多!
 GUICreate("Form",500,400)
   Local $Radio[5], $L = 0
   For $i = 0 To 4
   $Radio[$i] = GUICtrlCreateRadio("", 25, 80+35*$i, 15,15)
   Next
   GuiCtrlSetState($Radio[$L], 1)
   
   For $i = 1 To 5
   GUICtrlCreateLabel($i, 45, 82+35*($i-1), 20)
   GUICtrlSetColor(-1, 0x8B0000)
   Next
   
   $Button3 = GUICtrlCreateButton("START", 170, 340, 150, 40)
   GUISetState()
   While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                 Case -3
            Exit
         Case $Radio[0] To $Radio[4]
            $L = $nMsg - 3
         Case $Button3
            _Go1($L)        
      EndSwitch
   WEnd
Func _Go1($iX)
        Switch $iX
                Case 0
                                MsgBox(0,"","1")
                Case 1
                                MsgBox(0,"","2")
                Case 2
                                MsgBox(0,"","3")                                                        
                Case 3
                                MsgBox(0,"","4")                                
                Case 4
                                MsgBox(0,"","5")                        
        EndSwitch
EndFunc

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2012-4-26 18:03:57 | 显示全部楼层
回复  jericho0711
把建立控件的顺序调一下就能达到你预期的设想了!
我顺便按你的思路优化了代码, 看起来 ...
user3000 发表于 2012-4-26 16:17


太感謝了,整個優化了很多,而且看起來清楚多了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-30 13:20 , Processed in 0.084500 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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