找回密码
 加入
搜索
查看: 3349|回复: 21

谁能帮忙GUI复选框的例子

[复制链接]
发表于 2009-8-1 22:41:15 | 显示全部楼层 |阅读模式
本帖最后由 tsdeyl 于 2009-8-2 11:43 编辑

包括判断是否选中
做一个GUI
上面一个复选框
一个选中按扭   一个取消按扭   一个执行按扭
帮忙给个例子吧
本人新手  看别人的例子没有特别针对这个的
希望谁有空帮忙写下
十分感谢了
发表于 2009-8-1 22:43:14 | 显示全部楼层
学会搜索。。。。例子大把
 楼主| 发表于 2009-8-1 22:46:17 | 显示全部楼层
2# sunny617


刚才下了 但是因为是新手
别人没有特别真对这个写的
添加了太多别的功能
而且没有相关的注释
看了一下午也没弄明白
发表于 2009-8-1 23:41:27 | 显示全部楼层
本帖最后由 afan 于 2009-8-2 00:41 编辑

写了个简单的,带判断:
#include <GUIConstantsEx.au3>

GUICreate("复选框测试", 300, 200)
Dim $Checkbox[4], $cb[4]
$Checkbox[1] = GUICtrlCreateCheckbox("复选框1", 20, 20, 120, 20)
$Checkbox[2] = GUICtrlCreateCheckbox("复选框2", 20, 50, 120, 20)
$Checkbox[3] = GUICtrlCreateCheckbox("复选框3", 20, 80, 120, 20)
$Button = GUICtrlCreateButton('查看复选框', 70, 130, 150, 25)
GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button
                        For $i = 1 To 3
                                If BitAND(GUICtrlRead($Checkbox[$i]), $GUI_CHECKED) Then
                                        $cb[$i] = '复选框 ' & $i & ' 已选中'
                                Else
                                        $cb[$i] = '复选框 ' & $i & ' 未选中'
                                EndIf
                        Next
                        MsgBox(0, '状态:', $cb[1] & @CRLF & $cb[2] & @CRLF & $cb[3])
        EndSwitch
WEnd
发表于 2009-8-2 00:45:58 | 显示全部楼层
;~ 一个复选框的简单实例   By 298311657
;~ www.autoitx.com
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
Opt('MustDeclareVars', 1);设定必须先声明所有变量

Local $GUI, $Button_1, $Button_2, $Button_3, $Button_4, $msg, $label, $checked;需要用到的变量先进行定义
Local $check[5];定义一个长度5的数组,用来储存即将建立的5个复选框控件id
$GUI = GUICreate("复选框参考实例", 235, 180);GUI创建,并返回窗口句柄到$GUI变量中
GUISetBkColor(0xE0FFFF)
$check[0] = GUICtrlCreateCheckbox("CHECKBOX 1", 10, 10, 120, 20);开始控件创建,控件id将返回到前面的变量中
$check[1] = GUICtrlCreateCheckbox("CHECKBOX 2", 10, 40, 120, 20)
$check[2] = GUICtrlCreateCheckbox("CHECKBOX 3", 10, 70, 120, 20)
$check[3] = GUICtrlCreateCheckbox("CHECKBOX 4", 10, 100, 120, 20)
$check[4] = GUICtrlCreateCheckbox("CHECKBOX 5", 10, 130, 120, 20)
$label = GUICtrlCreateLabel("CHECKBOX 5等待选中...", 10, 160, 215, 12, $SS_CENTER);一个文字标签控件,设置文字居中显示
GUICtrlSetColor(-1, 0xff0000);设置lable的文字为红色
$Button_1 = GUICtrlCreateButton("全部选中", 150, 20, 75)
$Button_2 = GUICtrlCreateButton("取消全选", 150, 50, 75)
$Button_3 = GUICtrlCreateButton("确定", 150, 80, 75)
$Button_4 = GUICtrlCreateButton("退出", 150, 110, 75)
GUISetState();显示GUI

While 1;while循环,这里是一个无限循环
        $msg = GUIGetMsg();把GUI上的消息返回到$msg变量中
        Switch $msg;使用Switch关键字进行有条件的判断
                Case $GUI_EVENT_CLOSE, $Button_4;$msg的值等于$GUI_EVENT_CLOSE或$Button_4时退出
                        Exit
                Case $Button_1;$msg的值等于$Button_1时进行全选
                        For $i = 0 To 4
                                GUICtrlSetState($check[$i], $GUI_CHECKED);for循环选择所有复选框
                        Next
                Case $Button_2;$msg的值等于$Button_2时取消全选
                        For $i = 0 To 4
                                GUICtrlSetState($check[$i], $GUI_UNCHECKED);for循环取消所有复选框
                        Next
                Case $Button_3;$msg的值等于$Button_3时获取当前选中的复选框
                        $checked = '';先把$checked赋予一次空值,这样做是防止此前判断过的值被再次利用,造成判断错误
                        ;依旧是利用for循环判断选中的复选框,若选中的话则用ControlGetText函数根据复选框控件id获取它的说明文字
                        For $i = 0 To 4
                                ;GUICtrlRead读取复选框状态
                                ;BitAND进行与运算
                                ;ControlGetText读取复选框说明文字
                                If BitAND(GUICtrlRead($check[$i]), $GUI_CHECKED) Then $checked &= ControlGetText($GUI, "", $check[$i]) & @LF;$checked变量与自身进行连接

                                ;下面是不使用与运算的判断是否选中的方法
                                ;If GUICtrlRead($check[$i]) = $GUI_CHECKED Then $checked &= ControlGetText($GUI, "", $check[$i]) & @LF
                        Next
                        If $checked = '' Then
                                ;$checked为空的时候进行未选中提示
                                MsgBox(0, '', '当前没有任何复选框被选中!', 5, $GUI)
                        Else
                                ;$checked不为空的时候进行选中提示
                                MsgBox(0, '', '被选中的复选框为' & @LF & $checked, 5, $GUI)
                        EndIf
                Case $check[4];当GUI上的消息是对$check[4]控件操作时,运行以下代码
                        ;判断$check[4]是否选中,并对label进行修改
                        If BitAND(GUICtrlRead($check[4]), $GUI_CHECKED) Then
                                GUICtrlSetData($label, "CHECKBOX 5被选中了!")
                        Else
                                GUICtrlSetData($label, "CHECKBOX 5等待选中...")
                        EndIf
        EndSwitch
WEnd
写了个简单的例子,也许是你想要的~

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
万能群发器售 + 30 + 5

查看全部评分

 楼主| 发表于 2009-8-2 00:59:10 | 显示全部楼层
写了个简单的,带判断:
#include

GUICreate("复选框测试", 300, 200)
Dim $Checkbox[4], $cb[4]
$Checkbox[1] = GUICtrlCreateCheckbox("复选框1", 20, 20, 120, 20)
$Checkbox[2] = GUICtrlCreateCheckbox ...
afan 发表于 2009-8-1 23:41

我不太清楚这个是什么意思$GUI_CHECKED
 楼主| 发表于 2009-8-2 01:08:21 | 显示全部楼层
;~ 一个复选框的简单实例   By 298311657
;~ www.autoitx.com
#include
#include
Opt('MustDeclareVars', 1);设定必须先声明所有变量

Local $GUI, $Button_1, $Button_2, $Button_3, $Button_4, $msg, $l ...
298311657 发表于 2009-8-2 00:45

谢谢啊
写的很详细了
对我这样的新手帮助很大啊
感谢你
发表于 2009-8-2 01:41:36 | 显示全部楼层
本帖最后由 afan 于 2009-8-2 01:43 编辑
我不太清楚这个是什么意思$GUI_CHECKED
tsdeyl 发表于 2009-8-2 00:59


晕,白忙。。。特意写简单容易看,结果你还是要字多的
 楼主| 发表于 2009-8-2 01:45:56 | 显示全部楼层
晕,白忙。。。特意写简单容易看,结果你还是要字多的
afan 发表于 2009-8-2 01:41

不是啊
我就是要简单的呢
但是人家写了那么长而且都带有注释
对我帮助也很大啊
所以你们两个都要感谢呢
 楼主| 发表于 2009-8-2 01:48:44 | 显示全部楼层
还有啊$GUI_CHECKED这个我在帮助里怎么找不到呢
 楼主| 发表于 2009-8-2 01:49:43 | 显示全部楼层
别的我都看懂了只有这个是常量吧?
干什么用的不太清楚哦
是判断返回值的么
 楼主| 发表于 2009-8-2 01:57:04 | 显示全部楼层
要方便了能加下你QQ么?
我对这个还挺感兴趣的
但只是个人爱好
太业余了
如果不怕麻烦的话教教我吧
不会打扰你很多时间的
我的QQ335449309
发表于 2009-8-2 02:00:43 | 显示全部楼层
11# tsdeyl

$GUI_CHECKED 是控件返回的状态值,代表单选按框钮(Radio)或复选框按钮(Checkbox)被选中
与之相反的是 $GUI_UNCHECKED 未选中
发表于 2009-8-2 02:03:27 | 显示全部楼层
12# tsdeyl


我也是新手,不如你加5#的帅哥详聊吧,呵呵
 楼主| 发表于 2009-8-2 02:08:37 | 显示全部楼层
那人估计不爱熬夜哦
那 $cb1 起什么作用哦
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-4 02:55 , Processed in 0.076531 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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