kk_lee69
发表于 2017-6-5 23:09:55
回复 15# heroxianf
聽不懂.....
右键单击激活控件甚麼意思控健 本來不就是 激活的嗎狀態又沒有DISABLE??
不用下拉 就滑動選取不下拉 怎麼能夠滑動??滑動是你滑動還是 滑鼠自己滑動??
lin6051
发表于 2017-6-6 08:49:00
本帖最后由 lin6051 于 2017-6-6 08:51 编辑
回复 16# kk_lee69
他的意思 是 左键 单击 控件, 然后鼠标移动到 test3 不点击 停留2秒 就选取?
感觉 楼主 应该改变思路这样搞不好用 还折腾还不如 原始的
heroxianf
发表于 2017-6-6 08:59:23
回复 16# kk_lee69
应该是一楼的示例,右键获取控件焦点!我理解成激活控件了。
kk_lee69
发表于 2017-6-6 09:10:11
本帖最后由 kk_lee69 于 2017-6-6 09:11 编辑
回复 18# heroxianf
示例是COMOBO 控件 你說 右鍵獲取 控件焦點如果再加上 這篇文章的 標題 與 上面LIN6051 兄
所提到的 我理解成左鍵下拉滑動滑鼠後右鍵 設定焦點等同選定 所選的........
不知道這樣對嗎....??如果對...
這跟左鍵 下拉滑動滑鼠後左鍵點擊設定 焦點有何不同???
剛剛又想了一下 或者 你的意思是
左鍵下拉 右鍵不下拉只是設定焦點 到 所選的 COMOBO 控件呢??
heroxianf
发表于 2017-6-6 09:18:41
回复 19# kk_lee69
最后一句是我的想法。{:face (396):}
lin6051
发表于 2017-6-6 09:21:23
回复 19# kk_lee69
右键直接 选取 列表这样有意义么 ? 直接控件 设置 默认的列表 不就好了?
kk_lee69
发表于 2017-6-6 09:24:30
回复 21# lin6051
他沒有要獲取 列表他不要下拉只是設定焦點....
heroxianf
发表于 2017-6-6 09:31:37
回复 22# kk_lee69
对的,只是把一楼的鼠标悬停获取焦点,改成右键单击获取就好了!
lin6051
发表于 2017-6-6 09:34:55
本帖最后由 lin6051 于 2017-6-6 11:00 编辑
回复 22# kk_lee69
明白了鼠标移到 哪个ComboBox 控件 就 让它获取焦点,当 第一个下拉时候 移动到 test3 这时候 鼠标位置刚在 ComBoBox2上直接 让 2获取焦点 退出了
只是 还不明白都用鼠标操作了还要设定焦点 有什么用?
简单点 就用_ispressed 左键选取 右键 设定焦点?
#include <Misc.au3>
......
If $Info = $idComboBox1 Or $Info = $idComboBox2 and _IsPressed(2) Then
GUICtrlSetState($Info, $GUI_FOCUS)
_GUICtrlComboBox_ShowDropDown($Info, True)
kk_lee69
发表于 2017-6-6 11:01:14
這樣的效果嗎??
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <GuiComboBox.au3>
#include <WindowsConstants.au3>
;Global Const $WM_RBUTTONDOWN = 0x0204
GUIRegisterMsg($WM_RBUTTONDOWN, 'MyFunc')
Local $hGUI = GUICreate("ComboBox", 300, 200)
Local $idComboBox1 = GUICtrlCreateCombo("test1", 10, 10, 185, 20, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST))
Local $idComboBox2 = GUICtrlCreateCombo("中文1", 10, 50, 185, 20, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST))
$iClose = GUICtrlCreateButton("關閉", 210, 170, 85, 25)
GUICtrlSetData($idComboBox1, "test2|test3|test4", "test4")
GUICtrlSetData($idComboBox2, "中文2|中文3|中文4", "中文4")
GUISetState(@SW_SHOW, $hGUI)
While 1
; $Info = GUIGetCursorInfo($hGUI)
;If $Info = $idComboBox1 Or $Info = $idComboBox2 Then
; GUICtrlSetState($Info, $GUI_FOCUS)
;EndIf
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $iClose
ExitLoop
Case $idComboBox1
Case $idComboBox2
EndSwitch
WEnd
GUIDelete($hGUI)
Func MyFunc($HWnd, $iMsg, $wParam, $lParam)
$Info = GUIGetCursorInfo($hGUI)
If $Info = $idComboBox1 Or $Info = $idComboBox2 Then
GUICtrlSetState($Info, $GUI_FOCUS)
EndIf
EndFunc ;==>MyFunc
lin6051
发表于 2017-6-6 11:01:51
回复 1# heroxianf
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <GuiComboBox.au3>
#include <Misc.au3>
Example()
Func Example()
Local $hGUI = GUICreate("ComboBox", 300, 200)
Local $idComboBox1 = GUICtrlCreateCombo("test1", 10, 10, 185, 20, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST))
Local $idComboBox2 = GUICtrlCreateCombo("中文1", 10, 50, 185, 20, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST))
Local $idClose = GUICtrlCreateButton("关闭", 210, 170, 85, 25)
GUICtrlSetData($idComboBox1, "test2|test3|test4", "test4")
GUICtrlSetData($idComboBox2, "中文2|中文3|中文4", "中文4")
GUISetState(@SW_SHOW, $hGUI)
While 1
$Info = GUIGetCursorInfo($hGUI)
If $Info = $idComboBox1 Or $Info = $idComboBox2 and _IsPressed(2) Then
GUICtrlSetState($Info, $GUI_FOCUS)
_GUICtrlComboBox_ShowDropDown($Info, True)
EndIf
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $idClose
ExitLoop
Case $idComboBox1
Case $idComboBox2
EndSwitch
WEnd
GUIDelete($hGUI)
EndFunc ;==>Example
lin6051
发表于 2017-6-6 11:10:38
本帖最后由 lin6051 于 2017-6-6 11:25 编辑
或者 可以 先判断一下Combo1 是否打开状态
确定组合控件列表框是否展开.
_GUICtrlComboBox_GetDroppedState ( $hWnd )#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <GuiComboBox.au3>
Example()
Func Example()
Local $hGUI = GUICreate("ComboBox", 300, 200)
Local $idComboBox1 = GUICtrlCreateCombo("test1", 10, 10, 185, 20, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST))
Local $idComboBox2 = GUICtrlCreateCombo("中文1", 10, 50, 185, 20, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST))
Local $idClose = GUICtrlCreateButton("关闭", 210, 170, 85, 25)
GUICtrlSetData($idComboBox1, "test2|test3|test4", "test4")
GUICtrlSetData($idComboBox2, "中文2|中文3|中文4", "中文4")
GUISetState(@SW_SHOW, $hGUI)
While 1
$Info = GUIGetCursorInfo($hGUI)
Switch $Info
Case $idComboBox1
GUICtrlSetState($idComboBox1, $GUI_FOCUS)
_GUICtrlComboBox_ShowDropDown($Info, True)
Case $idComboBox2
if _GUICtrlComboBox_GetDroppedState($idComboBox1)=False then
GUICtrlSetState($idComboBox2, $GUI_FOCUS)
_GUICtrlComboBox_ShowDropDown($Info, True)
endif
EndSwitch
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $idClose
ExitLoop
Case $idComboBox1
Case $idComboBox2
EndSwitch
WEnd
GUIDelete($hGUI)
EndFunc ;==>Example
heroxianf
发表于 2017-6-6 15:02:24
回复 25# kk_lee69
你这个我运行没有效果呢AU3 版本是 3.3.12
heroxianf
发表于 2017-6-6 15:04:32
本帖最后由 heroxianf 于 2017-6-6 15:05 编辑
回复 26# lin6051
这个是我想要的效果,谢谢~
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <GuiComboBox.au3>
#include <Misc.au3>
Example()
Func Example()
Local $hGUI = GUICreate("ComboBox", 300, 200)
Local $idComboBox1 = GUICtrlCreateCombo("test1", 10, 10, 185, 20, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST))
Local $idComboBox2 = GUICtrlCreateCombo("中文1", 10, 50, 185, 20, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST))
Local $idClose = GUICtrlCreateButton("关闭", 210, 170, 85, 25)
GUICtrlSetData($idComboBox1, "test2|test3|test4", "test4")
GUICtrlSetData($idComboBox2, "中文2|中文3|中文4", "中文4")
GUISetState(@SW_SHOW, $hGUI)
While 1
$Info = GUIGetCursorInfo($hGUI)
If $Info = $idComboBox1 Or $Info = $idComboBox2 And _IsPressed(2) Then
GUICtrlSetState($Info, $GUI_FOCUS)
;~ _GUICtrlComboBox_ShowDropDown($Info, True)
GUICtrlSetState($Info, $GUI_FOCUS)
EndIf
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $idClose
ExitLoop
Case $idComboBox1
Case $idComboBox2
EndSwitch
WEnd
GUIDelete($hGUI)
EndFunc ;==>Example
heroxianf
发表于 2017-6-6 15:07:58
回复 25# kk_lee69
KK29楼是我想要的结果,是不是我描述有问题啊~{:face (197):}