找回密码
 加入
搜索
楼主: mo_shaojie

[AU3基础] (已解决)请教个复选框的问题

 火.. [复制链接]
发表于 2011-4-26 16:22:45 | 显示全部楼层
想的大概明白了,完全属个人想多了,不好意思,大家不用费脑子了,和单选一样
 楼主| 发表于 2011-4-26 22:54:29 | 显示全部楼层
这个好玩,试下。
蛋蛋别喷我。
3mile 发表于 2011-4-26 10:04

呵呵,3mile这个有点意思.把全选的推荐都打勾了看看.再去掉推荐的勾再看看.哈.完全无反应的.这下有意思了.
 楼主| 发表于 2011-4-26 22:57:24 | 显示全部楼层
呵呵,3mile这个有点意思.把全选的推荐都打勾了看看.再去掉推荐的勾再看看.哈.完全无反应的.这下有意思了. ...
mo_shaojie 发表于 2011-4-26 22:54


不好意思,想错了.应该是正确的.
 楼主| 发表于 2011-4-27 10:22:48 | 显示全部楼层
还有一种效果就是点击全选选框,全部选上,推荐选框的勾自动去掉,再点击推荐选框,选上推荐的选框,全选复选框的勾去掉.有点互不干忧的做法.
发表于 2011-4-27 12:55:53 | 显示全部楼层
注释掉47-49,54-56行
 楼主| 发表于 2011-4-27 15:33:44 | 显示全部楼层
注释掉47-49,54-56行
3mile 发表于 2011-4-27 12:55


这个是什么意思?如果这样的话,效果大不一样的了.你可以看下是什么问题了.
发表于 2011-4-27 17:40:45 | 显示全部楼层
本帖最后由 netegg 于 2011-4-27 22:05 编辑

忽然想到一个问题,楼主的全选和推荐操作是单向的,只管选不管读吧,具体的操作应该是其它复选的事情
虽说有点绕,楼主看看这段代码,肯定是没写对,不过可能可以参考一下
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <array.au3>
;Global Const $GUI_CHECKED = 1
;Global Const $GUI_INDETERMINATE = 2
;Global Const $GUI_UNCHECKED = 4
Dim $Checkbox[21]
Dim $choose = _arraycreate(2, 5, 6, 7)
Dim $sChoose = '2,5,6,7'
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 438, 192, 124)
For $i = 1 To 18
        $Checkbox[$i] = GUICtrlCreateCheckbox("Checkbox" & $i, 48, 32 + 16 * ($i - 1), 97, 17)
Next
$Checkbox[19] = GUICtrlCreateCheckbox("推荐", 392, 312, 97, 17)
$Checkbox[20] = GUICtrlCreateCheckbox("全选", 392, 352, 97, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        If $nMsg = $GUI_EVENT_CLOSE Then Exit
        For $i = 1 To 20
           If $nMsg = $Checkbox[$i] Then
                ;判断推荐复选
                If $i = 19 Then
                        For $j In $choose
                                GUICtrlSetState($Checkbox[$j], GUICtrlRead($Checkbox[19]))
                        Next
                        For $j = 1 To 18
                                If GUICtrlRead($Checkbox[$j]) = 4 Then
                                        GUICtrlSetState($Checkbox[20], 4)
                                EndIf
                        Next
                ElseIf $i = 20 Then ;判断全选复选
                        For $j = 1 To 19
                                GUICtrlSetState($Checkbox[$j], GUICtrlRead($Checkbox[20]))
                        Next
                ElseIf Not ($i = 19 Or $i = 20) Then ;判断一般复选
                        GUICtrlSetState($Checkbox[20], GUICtrlRead($Checkbox[$i]))
                        If StringInStr($sChoose, $i) Then GUICtrlSetState($Checkbox[19], GUICtrlRead($Checkbox[$i]))
                        For $j = 1 To 18
                                ;检查所有一般复选
                                If GUICtrlRead($Checkbox[$j]) = 4 Then
                                        GUICtrlSetState($Checkbox[20], 4) ; 取消全选复选
                                        If StringInStr($sChoose, $j) Then GUICtrlSetState($Checkbox[19], 4)
                                EndIf
                        Next
                EndIf
        EndIf
   Next
WEnd
补齐了,试试看对不对
发表于 2011-4-28 04:08:07 | 显示全部楼层
本帖最后由 netegg 于 2011-4-28 07:45 编辑
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <array.au3>
Dim $Checkbox[21]
Dim $sChoose = '2,5,6,7'
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 438, 192, 124)
For $i = 1 To 18
        $Checkbox[$i] = GUICtrlCreateCheckbox("Checkbox" & $i, 48, 32 + 16 * ($i - 1), 97, 17)
Next
$Checkbox[19] = GUICtrlCreateCheckbox("推荐", 392, 312, 97, 17)
$Checkbox[20] = GUICtrlCreateCheckbox("全选", 392, 352, 97, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        If $nMsg = $GUI_EVENT_CLOSE Then Exit
        For $i = 1 To 20
          If $nMsg = $Checkbox[$i] Then
            Switch $i
                Case 19, 20
                    If $i = 19 Then
                        GUICtrlSetState($Checkbox[20], GUICtrlRead($Checkbox[19]))
                        For $j In $choose
                                GUICtrlSetState($Checkbox[$j], GUICtrlRead($Checkbox[19]))
                        Next
                     Else
                        For $j = 1 To 19
                                GUICtrlSetState($Checkbox[$j], GUICtrlRead($Checkbox[20]))
                        Next
                     EndIf
                     For $j = 1 To 18
                        If GUICtrlRead($Checkbox[$j]) = 4 Then  GUICtrlSetState($Checkbox[20], 4)
                      Next
                Case Else ;判断一般复选
                      GUICtrlSetState($Checkbox[20], GUICtrlRead($Checkbox[$i]))
                      If StringInStr($sChoose, $i) Then GUICtrlSetState($Checkbox[19], GUICtrlRead($Checkbox[$i]))
                        For $j = 1 To 18
                           ;检查所有一般复选
                           If GUICtrlRead($Checkbox[$j]) = 4 Then
                                GUICtrlSetState($Checkbox[20], 4) ; 取消全选复选
                                If StringInStr($sChoose, $j) Then GUICtrlSetState($Checkbox[19], 4)
                            EndIf
                        Next
                EndSwitch
          EndIf
    Next
WEnd
再试试,简化了些
 楼主| 发表于 2011-4-28 08:43:18 | 显示全部楼层
已经知道了,多谢各位的给力.很感激.
发表于 2011-4-29 03:38:09 | 显示全部楼层
学习了,坛子里高手就是多
发表于 2011-4-29 08:49:00 | 显示全部楼层
用单选框就好搞定的。
发表于 2011-4-29 10:42:46 | 显示全部楼层
回复 41# zcx880517
错了,全选选上必然推荐选上,不可能用单选
发表于 2011-4-30 09:25:53 | 显示全部楼层
新手学习一下
发表于 2015-6-21 20:37:34 | 显示全部楼层
回复 7# 水木子
请问,全不选怎么做,谢谢了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-27 12:41 , Processed in 0.069600 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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