找回密码
 加入
搜索
查看: 7804|回复: 16

[AU3基础] 请问如何在combox中嵌入checkbox

  [复制链接]
发表于 2015-1-4 23:27:22 | 显示全部楼层 |阅读模式

急求高手解决,跪谢!!!
发表于 2015-1-5 01:11:46 | 显示全部楼层
combox只能选一项嵌入复选框干什么
 楼主| 发表于 2015-1-5 10:37:40 | 显示全部楼层
回复 2# netegg
就是想要可以选中多项嘛
发表于 2015-1-5 10:59:39 | 显示全部楼层
本帖最后由 netegg 于 2015-1-5 11:01 编辑

回复 3# solo_k
关键你怎么显示啊,不是不行,但感觉没什么必要
发表于 2015-1-5 11:04:15 | 显示全部楼层
本帖最后由 netegg 于 2015-1-5 11:05 编辑

思路简单说一下,获取点击下拉箭头消息,点击时,弹出一个listbox,作为单独一个控件处理,随便加,放弃原来的combo自带的下拉列表
发表于 2015-1-5 13:36:25 | 显示全部楼层
本帖最后由 netegg 于 2015-1-5 13:54 编辑

只能告诉你建个图像列表,然后切换索引,图像分别是@SystemDir & "\rasdlg.dll", 1/@SystemDir & "\rasdlg.dll", 0
怎么玩就看自己了,肯定要用到消息操作
[au3]#include <GuiComboBoxEx.au3>
#include <GuiImageList.au3>
#include <GuiConstantsEx.au3>

Opt('MustDeclareVars', 1)

$Debug_CB = False ; Check ClassName being passed to ComboBox/ComboBoxEx functions, set to True and use a handle to another control to see it work

_Main()

Func _Main()
        Local $hGUI, $hImage, $image, $hCombo
       
        ; Create GUI
        $hGUI = GUICreate("ComboBoxEx Get/Set Item Image", 400, 300)
        $hCombo = _GUICtrlComboBoxEx_Create ($hGUI, "", 2, 2, 394, 100)
        GUISetState()

        $hImage = _GUIImageList_Create (16, 16, 5, 3)
        _GUIImageList_AddIcon ($hImage, @SystemDir & "\rasdlg.dll", 1)
        _GUIImageList_AddIcon ($hImage, @SystemDir & "\rasdlg.dll", 0)
        _GUICtrlComboBoxEx_SetImageList ($hCombo, $hImage)

        _GUICtrlComboBoxEx_BeginUpdate ($hCombo)
        For $x = 0 To 10
                $image = Random(0, 1, 1)
                _GUICtrlComboBoxEx_AddString ($hCombo, StringFormat("%03d : Random string", Random(1, 10, 1)), $image, $image)
        Next
        _GUICtrlComboBoxEx_EndUpdate ($hCombo)
        _GUICtrlComboBoxEx_SetItemImage ($hCombo, 1, 1)
        MsgBox(4160, "Information", "Item Image: " & _GUICtrlComboBoxEx_GetItemImage ($hCombo, 0))

        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>_Main

[/au3]

本帖子中包含更多资源

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

×
 楼主| 发表于 2015-1-5 15:04:58 | 显示全部楼层

看效果好像不错,我先试试
谢谢net兄
 楼主| 发表于 2015-1-5 15:10:38 | 显示全部楼层
回复 6# netegg

你这个只是做出了一个样子,但不是真正下拉复选框
我想要的效果就是,比如下拉菜单中有1,2,3,4,5五个选项
我选择了1,2,3,然后combox的那个栏中就会显示1|2|3
 楼主| 发表于 2015-1-5 15:11:24 | 显示全部楼层
回复 6# netegg


    不过还是谢谢啦,我再研究研究
发表于 2015-1-5 15:37:51 | 显示全部楼层
本帖最后由 netegg 于 2015-1-5 15:49 编辑

我不是说了吗,点击哪项,用消息获取索引,检查图像索引,0/1,然后获取文本,设置编辑框就行了
那部分之所以没写,是因为太麻烦,要考虑很多情况
先说两种,第一种情况,如果在编辑框里删除,复选项清不清,第二种,先取消复选,又选上该项,是加到编辑框尾部,还是原来的位置
发表于 2015-1-5 16:55:48 | 显示全部楼层
本帖最后由 netegg 于 2015-1-5 17:21 编辑

简单的,后续处理自己琢磨
[au3]#include <GuiComboBoxEx.au3>
#include <GuiImageList.au3>
#include <GuiConstantsEx.au3>
#include <GuiEdit.au3>

Opt('MustDeclareVars', 1)

$Debug_CB = False ; Check ClassName being passed to ComboBox/ComboBoxEx functions, set to True and use a handle to another control to see it work

_Main()

Func _Main()
        Local $hGUI, $hImage, $image, $hCombo, $sText, $ret = '', $hEdit

        ; Create GUI
        $hGUI = GUICreate("ComboBoxEx Get/Set Item Image", 400, 300)
        $hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 394, 100)
        GUISetState()

        $hImage = _GUIImageList_Create(16, 16, 5, 3)
        _GUIImageList_AddIcon($hImage, @SystemDir & "\rasdlg.dll", 1)
        _GUIImageList_AddIcon($hImage, @SystemDir & "\rasdlg.dll", 0)
        _GUICtrlComboBoxEx_SetImageList($hCombo, $hImage)

        _GUICtrlComboBoxEx_BeginUpdate($hCombo)
        For $x = 0 To 10
                $image = Random(0, 1, 1)
                _GUICtrlComboBoxEx_AddString($hCombo, $x, $image, $image)
        Next
        _GUICtrlComboBoxEx_SetItemImage($hCombo, 1, 1)
        _GUICtrlComboBoxEx_EndUpdate($hCombo)
        For $i = 0 To 10
                If _GUICtrlComboBoxEx_GetItemImage($hCombo, $i) = 1 Then
                        _GUICtrlComboBoxEx_GetItemText($hCombo, $i, $sText)
                        $ret &= $sText & '|'
                EndIf
        Next
        $hEdit = _GUICtrlComboBoxEx_GetEditControl($hCombo)
        _GUICtrlEdit_SetText($hEdit, stringtrimright($ret, 1))
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>_Main

[/au3]
 楼主| 发表于 2015-1-5 17:17:48 | 显示全部楼层
回复 11# netegg

好的,谢谢,我再认真研究一下
发表于 2015-1-8 07:54:39 | 显示全部楼层
学习了,,,,,,,,,,
发表于 2015-1-10 10:59:53 | 显示全部楼层
同学习了 虽然目前还看不懂
发表于 2015-1-11 00:51:48 | 显示全部楼层
对了,还有个问题,点击会直接收回下拉框,可能还要想想
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-12 20:05 , Processed in 0.083320 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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