smooth 发表于 2023-11-11 14:25:54

combo怎么设置为初始未选择项目的状态?

我用下面代码创建了一个combo



Global $Combo_LB = GUICtrlCreateCombo('', 430, 396, 56, 25, 0x0003);0x0003:在列表框框中显示当前选择的静态文本字段.
GUICtrlSetData(-1, '采购|技术|其他')



脚本启动之后,界面Combo控件显示为空白。但鼠标点击Listview中的某个项目时,会通过下面代码修改combo显示的项目

GUICtrlSetData($Combo_LB, _GUICtrlListView_GetItemText($idListview_lbc, $iCurIndex, 2))


但是当listview中为空白时,我想让combo显示为空白,就不知道怎么做了。GUICtrlSetData($Combo_LB, "")虽然可以做到,但是会把combo中所有的项目全部清空了。

afan 发表于 2023-11-11 15:20:22

0x03 样式不支持这样的操作
不过可以加一行
GUICtrlSetData($Combo_LB, '')
GUICtrlSetData($Combo_LB, '采购|技术|其他')

smooth 发表于 2023-11-11 16:02:27

afan 发表于 2023-11-11 15:20
0x03 样式不支持这样的操作
不过可以加一行
GUICtrlSetData($Combo_LB, '')


谢谢A大,思路决定出路,写代码还是要看思路。

gyp2000 发表于 2023-11-11 21:48:24

GUICtrlSetData( 控件ID, 数据[, 默认值])

修改选中,应该修改默认值:
GUICtrlSetData($Combo_LB,'采购|技术|其他',_GUICtrlListView_GetItemText($idListview_lbc, $iCurIndex, 2))

afan 发表于 2023-11-12 10:57:48

本帖最后由 afan 于 2023-11-12 11:04 编辑

gyp2k,论审题的重要性 :face (24):


之前两行可以改为一行:
GUICtrlSetData($Combo_LB, '|采购|技术|其他')
另,想了个发送消息的方法,好处是不用重新添加数据,实际更简单:
DllCall('user32.dll', 'lresult', 'SendMessageA', 'hwnd', GUICtrlGetHandle($Combo_LB), 'uint', 0x14E, 'wparam', -1, 'lparam', 0)

gyp2000 发表于 2023-11-12 23:29:33

afan 发表于 2023-11-12 10:57
gyp2k,论审题的重要性




我又看了几遍他的需求,到现在也没弄明白他是想改变下拉列表中的项目,还是只是想修改选中项。
如果只是修改选中,那么修改参数3 默认值就好了。
如果是改变项目内容,修改参数2和参数3就行。
正常来说参数3不应该被忽略才对,除非他不想选中任何项目。

afan 发表于 2023-11-13 11:01:16

gyp2000 发表于 2023-11-12 23:29
我又看了几遍他的需求,到现在也没弄明白他是想改变下拉列表中的项目,还是只是想修改选中项。
如果只是 ...

光看标题都能理解的问题…… LZ也不是新手,怎么可能是你想的那种初级问题

smooth 发表于 2023-11-13 20:54:20

本帖最后由 smooth 于 2023-11-13 20:56 编辑

afan 发表于 2023-11-12 10:57
gyp2k,论审题的重要性


两行:

GUICtrlSetData($Combo_LB, '')
GUICtrlSetData($Combo_LB, '采购|技术|其他')


不能改为一行:

GUICtrlSetData($Combo_LB, '采购|技术|其他')


如果改为一行,则里面的项目会被重复设置。


DllCall('user32.dll', 'lresult', 'SendMessageA', 'hwnd', GUICtrlGetHandle($Combo_LB), 'uint', 0x14E, 'wparam', -1, 'lparam', 0)

DLLCALL,实测不是很好用,第一次点击Listview,没有将数据写入Combo,也许是我不会用。


afan 发表于 2023-11-13 21:06:56

smooth 发表于 2023-11-13 20:54
两行:




改为一行你仔细看看我写的和你写的区别。
第二种方法无实际应用代码,不做猜测

smooth 发表于 2023-11-13 21:29:44

afan 发表于 2023-11-13 21:06
改为一行你仔细看看我写的和你写的区别。
第二种方法无实际应用代码,不做猜测

眼力不行,看了几遍,才发现多了一个“|”
页: [1]
查看完整版本: combo怎么设置为初始未选择项目的状态?