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

[AU3基础] 【已解决】选择单选框实现对复选框的控制

  [复制链接]
发表于 2012-8-22 08:42:15 | 显示全部楼层 |阅读模式
本帖最后由 虎虎虎 于 2012-8-22 15:56 编辑

如何通过选择单选框实现对复选框的选择,主要是互斥处理不好(个人比较笨,大家别笑我),为了避免混乱,我把代码清理了一下,如下:
#include <ButtonConstants.au3>
 #include <GUIConstantsEx.au3>
 #include <WindowsConstants.au3>
 #Region ### START Koda GUI section ### Form=
 $Form1_1 = GUICreate("优化工具", 530, 535, 204, 128)
 GUICtrlCreateGroup("操作", 5, 456, 518, 49)
 $Button1 = GUICtrlCreateButton("优化 (U)", 309, 471, 75, 25)
 $Button2 = GUICtrlCreateButton("退出 (E)", 421, 471, 75, 25)
 $Radio1 = GUICtrlCreateRadio("推荐", 21, 477, 73, 17)
 $Radio2 = GUICtrlCreateRadio("全选", 101, 477, 65, 17)
 GUICtrlCreateGroup("", -99, -99, 1, 1)
 $Group1 = GUICtrlCreateGroup("右键优化", 6, 104, 513, 105)
 GUICtrlCreateCheckbox("右键添加上帝模式菜单", 24, 128, 137, 17)
 GUICtrlCreateCheckbox("右键添加记事本打开", 184, 128, 129, 17)
 GUICtrlCreateCheckbox("右键加上复制到和移动到键", 344, 128, 161, 17)
 GUICtrlCreateCheckbox("右键添加【服务项】", 24, 156, 121, 17)
 GUICtrlCreateCheckbox("右键添加注册表编辑器", 184, 156, 137, 17)
 GUICtrlCreateCheckbox("右键添加组策略", 344, 156, 113, 17)
 GUICtrlCreateCheckbox("右键菜单添加控制面板", 24, 184, 137, 17)
 GUICtrlCreateCheckbox("右键管理员取得所有权", 184, 184, 137, 17)
 GUICtrlCreateGroup("", -99, -99, 1, 1)
 $Group2 = GUICtrlCreateGroup("个性优化", 8, 216, 513, 105)
 GUICtrlCreateCheckbox("在开始菜单显示运行", 24, 240, 129, 17)
 GUICtrlCreateCheckbox("在桌面上显示计算机", 184, 240, 129, 17)
 GUICtrlCreateCheckbox("在桌面上显示回收站", 344, 240, 129, 17)
 GUICtrlCreateCheckbox("在桌面上显示个人文件夹", 24, 268, 153, 17)
 GUICtrlCreateCheckbox("在桌面上显示控制面板", 184, 268, 137, 17)
 GUICtrlCreateCheckbox("在桌面显示网络", 344, 268, 105, 17)
 GUICtrlCreateCheckbox("win7显示桌面IE图标(x86)", 24, 296, 153, 17)
 GUICtrlCreateCheckbox("修改默认安装目录为D盘", 184, 296, 145, 17)
 GUICtrlCreateCheckbox("关闭程序兼容性助手", 344, 296, 129, 17)
 GUICtrlCreateGroup("", -99, -99, 1, 1)
 $Group3 = GUICtrlCreateGroup("任务栏优化", 9, 328, 513, 105)
 GUICtrlCreateCheckbox("隐藏操作中心托盘图标", 24, 360, 137, 17)
 GUICtrlCreateGroup("", -99, -99, 1, 1)
 GUISetState(@SW_SHOW)
 #EndRegion ### END Koda GUI section ###
 
 While 1
         $nMsg = GUIGetMsg()
         Switch $nMsg
                 Case $GUI_EVENT_CLOSE
                         Exit
 
         EndSwitch
 WEnd
 








基本解决,不知哪位有更好的法子。。 特别是匹配【推荐】;如果选项过多,一项一项的设置,太没效率了。

#include <ButtonConstants.au3>
 #include <GUIConstantsEx.au3>
 #include <WindowsConstants.au3>
 #region ### START Koda GUI section ### Form=
 
 Opt("GUIOnEventMode", 1) ;启用/关闭 OnEvent 函数通知。0 = (默认),取消 1 = 启用。
 ;~ AutoItSetOption /opt(调整 AutoIt 各种函数/参数的运作方式.)。
 
 Global $Form1_1
 
 _main()
 
 Func _main()
         $Form1_1 = GUICreate("优化工具", 530, 535, 204, 128)
         GUICtrlCreateGroup("操作", 5, 456, 518, 49)
         Global $Button1 = GUICtrlCreateButton("优化 (&U)", 309, 471, 75, 25)
         Global $Button2 = GUICtrlCreateButton("退出 (&E)", 421, 471, 75, 25)
         Global $TJ = GUICtrlCreateRadio("推荐", 21, 477, 73, 17)
         ;GUICtrlSetState(-1, $GUI_CHECKED)
         Global $QX = GUICtrlCreateRadio("全选", 101, 477, 65, 17)
         Global $Checkbox[19]
         
         GUICtrlCreateGroup("", -99, -99, 1, 1)
         $Group1 = GUICtrlCreateGroup("右键优化", 6, 104, 513, 105)
         $Checkbox[1] = GUICtrlCreateCheckbox("右键添加上帝模式菜单", 24, 128, 137, 17)
         $Checkbox[2] = GUICtrlCreateCheckbox("右键添加记事本打开", 184, 128, 129, 17)
         $Checkbox[3] = GUICtrlCreateCheckbox("右键加上复制到和移动到键", 344, 128, 161, 17)
         $Checkbox[4] = GUICtrlCreateCheckbox("右键添加【服务项】", 24, 156, 121, 17)
         $Checkbox[5] = GUICtrlCreateCheckbox("右键添加注册表编辑器", 184, 156, 137, 17)
         $Checkbox[6] = GUICtrlCreateCheckbox("右键添加组策略", 344, 156, 113, 17)
         $Checkbox[7] = GUICtrlCreateCheckbox("右键菜单添加控制面板", 24, 184, 137, 17)
         $Checkbox[8] = GUICtrlCreateCheckbox("右键管理员取得所有权", 184, 184, 137, 17)
 
         $Group2 = GUICtrlCreateGroup("个性优化", 8, 216, 513, 105)
         $Checkbox[9] = GUICtrlCreateCheckbox("在开始菜单显示运行", 24, 240, 129, 17)
         $Checkbox[10] = GUICtrlCreateCheckbox("在桌面上显示计算机", 184, 240, 129, 17)
         $Checkbox[11] = GUICtrlCreateCheckbox("在桌面上显示回收站", 344, 240, 129, 17)
         $Checkbox[12] = GUICtrlCreateCheckbox("在桌面上显示个人文件夹", 24, 268, 153, 17)
         $Checkbox[13] = GUICtrlCreateCheckbox("在桌面上显示控制面板", 184, 268, 137, 17)
         $Checkbox[14] = GUICtrlCreateCheckbox("在桌面显示网络", 344, 268, 105, 17)
         $Checkbox[15] = GUICtrlCreateCheckbox("win7显示桌面IE图标(x86)", 24, 296, 153, 17)
         $Checkbox[16] = GUICtrlCreateCheckbox("修改默认安装目录为D盘", 184, 296, 145, 17)
         $Checkbox[17] = GUICtrlCreateCheckbox("关闭程序兼容性助手", 344, 296, 129, 17)
 
         $Group3 = GUICtrlCreateGroup("任务栏优化", 9, 328, 513, 105)
         $Checkbox[18] = GUICtrlCreateCheckbox("隐藏操作中心托盘图标", 24, 360, 137, 17)
 
         GUICtrlCreateGroup("", -99, -99, 1, 1)
         GUISetState(@SW_SHOW)
 
 EndFunc   ;==>_main
 #endregion ### END Koda GUI section ###
 
 
                 GUISetOnEvent($GUI_EVENT_CLOSE, "_exit") ;当一个系统按钮被点击时调用一个用户自定义函数(UDF).
                 
                 GUICtrlSetOnEvent($Button1, "_run")
                 
                 GUICtrlSetOnEvent($Button2, "_exit");为指定控件的点击行为定义一个用户函数.
                 
                 GUICtrlSetOnEvent($TJ, "_choose");推荐用户选择项目
                 
                 GUICtrlSetOnEvent($QX, "_all");全选用户选择项目
 
 While 1
         Sleep(1000)
 WEnd
 
 
 
 Func _exit()
         
         Exit
 EndFunc   ;==>_exit
 
 
 Func _choose() ;推荐项目。
         For $Gi = 1 To 18
                 
                 GUICtrlSetState($Checkbox[$Gi], 4)
         Next
         
         ;Dim $Hi[6]= [2,3,4,5,6,7]
         GUICtrlSetState($Checkbox[2], 1)
         GUICtrlSetState($Checkbox[3], 1)
         GUICtrlSetState($Checkbox[4], 1)
         GUICtrlSetState($Checkbox[6], 1)
         GUICtrlSetState($Checkbox[9], 1)
         GUICtrlSetState($Checkbox[17], 1)
         GUICtrlSetState($Checkbox[18], 1)
 EndFunc   ;==>_choose
 
 
 Func _all() ;全部项目。
         
         For $Gi = 1 To 18
                 
                 GUICtrlSetState($Checkbox[$Gi], 1)
                 
         Next
 EndFunc   ;==>_all
 
 
 Func _run()
 
         Switch MsgBox(64, "测试", "先测试,再说。。", 0)
                 
                 Case 1
 
         EndSwitch
 
 EndFunc   ;==>_run
 
 
 
 
 
 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-8-22 10:03:40 | 显示全部楼层
radio本来就是选择一个,你只需要把每个radio对应的选项做好就行了。
 楼主| 发表于 2012-8-22 10:14:27 | 显示全部楼层
回复 2# haijie1223

这个我知道。
1.原因就在,选择【推荐】后,再选【全选】,或选择【全选】,再选【推荐】,复选框,不能复原的问题。

2.我之前在坛子里,看到“即即”的复选框函数,在匹配选择数组的时候,包含1和2,也是全选,不知何故?
帖子地址是:
http://www.autoitx.com/forum.php ... =%B8%B4%D1%A1%BF%F2

你可以试试。
发表于 2012-8-22 10:43:10 | 显示全部楼层
你的程式沒有完全PO出來,無法分辨是否是程式上的問題
只能就你提供的來做邏輯判別

1. 你用推薦設定了, checkbox 當然會打勾
  中間牽扯到你設推薦,而原先 checkbox 打勾地方是否先消除,再設上打勾
2. 【推荐】【全选】用 radio 我個人覺得很奇怪,應該用 button 是否比較洽當點
3. 若你堅持要用還原,那就是在點選時+設定ckeckbox前,用一組陣列將原本的打勾不打勾全部存起來
  然後再等復原
  不過,因為經過【推荐】【全选】儲存打勾的陣列容易跑掉。這是要注意的地方
发表于 2012-8-22 10:47:55 | 显示全部楼层
http://www.autoitx.com/thread-23547-1-1.html
按钮改成单选控制就行了
发表于 2012-8-22 10:52:58 | 显示全部楼层
GUICtrlSetState
发表于 2012-11-15 16:34:24 | 显示全部楼层
学习中。有些东西帮助了我。谢谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-14 20:07 , Processed in 0.078461 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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