请问如何在combox中嵌入checkbox
{:face (229):}急求高手解决,跪谢!!! combox只能选一项嵌入复选框干什么 回复 2# netegg
就是想要可以选中多项嘛 本帖最后由 netegg 于 2015-1-5 11:01 编辑
回复 3# solo_k
关键你怎么显示啊,不是不行,但感觉没什么必要 本帖最后由 netegg 于 2015-1-5 11:05 编辑
思路简单说一下,获取点击下拉箭头消息,点击时,弹出一个listbox,作为单独一个控件处理,随便加,放弃原来的combo自带的下拉列表 本帖最后由 netegg 于 2015-1-5 13:54 编辑
只能告诉你建个图像列表,然后切换索引,图像分别是@SystemDir & "\rasdlg.dll", 1/@SystemDir & "\rasdlg.dll", 0
怎么玩就看自己了,肯定要用到消息操作
#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
{:face (239):}
看效果好像不错,我先试试
谢谢net兄 回复 6# netegg
你这个只是做出了一个样子,但不是真正下拉复选框
我想要的效果就是,比如下拉菜单中有1,2,3,4,5五个选项
我选择了1,2,3,然后combox的那个栏中就会显示1|2|3 回复 6# netegg
不过还是谢谢啦,我再研究研究 本帖最后由 netegg 于 2015-1-5 15:49 编辑
我不是说了吗,点击哪项,用消息获取索引,检查图像索引,0/1,然后获取文本,设置编辑框就行了
那部分之所以没写,是因为太麻烦,要考虑很多情况
先说两种,第一种情况,如果在编辑框里删除,复选项清不清,第二种,先取消复选,又选上该项,是加到编辑框尾部,还是原来的位置 本帖最后由 netegg 于 2015-1-5 17:21 编辑
简单的,后续处理自己琢磨
#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
回复 11# netegg
{:face (88):}
好的,谢谢,我再认真研究一下 学习了,,,,,,,,,, 同学习了 虽然目前还看不懂 对了,还有个问题,点击会直接收回下拉框,可能还要想想
页:
[1]
2