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):}
页: 1 [2] 3
查看完整版本: 接上一次讨论,下拉框获取焦点问题[已解决]