找回密码
 加入
搜索
楼主: heroxianf

[GUI管理] 接上一次讨论,下拉框获取焦点问题[已解决]

 火.. [复制链接]
发表于 2017-6-5 23:09:55 | 显示全部楼层
回复 15# heroxianf

聽不懂.....  

右键单击激活控件  甚麼意思  控健 本來不就是 激活的嗎  狀態又沒有DISABLE??

不用下拉 就滑動選取  不下拉 怎麼能夠滑動??  滑動是你滑動  還是 滑鼠自己滑動??
发表于 2017-6-6 08:49:00 | 显示全部楼层
本帖最后由 lin6051 于 2017-6-6 08:51 编辑

回复 16# kk_lee69


   他的意思 是 左键 单击 控件, 然后鼠标移动到 test3 不点击   停留2秒 就选取?



感觉 楼主 应该改变思路  这样搞不好用   还折腾  还不如 原始的
 楼主| 发表于 2017-6-6 08:59:23 | 显示全部楼层
回复 16# kk_lee69


    应该是一楼的示例,右键获取控件焦点!我理解成激活控件了。
发表于 2017-6-6 09:10:11 | 显示全部楼层
本帖最后由 kk_lee69 于 2017-6-6 09:11 编辑

回复 18# heroxianf

示例是  COMOBO 控件   你說 右鍵獲取 控件焦點  如果再加上 這篇文章的 標題 與 上面LIN6051 兄

所提到的 我理解成  左鍵下拉  滑動滑鼠後  右鍵 設定焦點  等同選定 所選的........

不知道這樣對嗎....??  如果對...

這跟  左鍵 下拉  滑動滑鼠後  左鍵點擊  設定 焦點  有何不同???

剛剛  又想了一下   或者 你的意思是

左鍵下拉   右鍵不下拉  只是設定焦點 到 所選的 COMOBO 控件呢??
 楼主| 发表于 2017-6-6 09:18:41 | 显示全部楼层
回复 19# kk_lee69

最后一句是我的想法。
发表于 2017-6-6 09:21:23 | 显示全部楼层
回复 19# kk_lee69


右键直接 选取 列表  这样有意义么 ?    直接控件 设置 默认的列表 不就好了?
发表于 2017-6-6 09:24:30 | 显示全部楼层
回复 21# lin6051

他沒有要獲取 列表  他不要下拉  只是設定焦點....
 楼主| 发表于 2017-6-6 09:31:37 | 显示全部楼层
回复 22# kk_lee69


    对的,只是把一楼的鼠标悬停获取焦点,改成右键单击获取就好了!
发表于 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[4] = $idComboBox1 Or $Info[4] = $idComboBox2 and _IsPressed(2) Then
                        GUICtrlSetState($Info[4], $GUI_FOCUS)
                        _GUICtrlComboBox_ShowDropDown($Info[4], True)
发表于 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[4] = $idComboBox1 Or $Info[4] = $idComboBox2 Then
              ;         GUICtrlSetState($Info[4], $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[4] = $idComboBox1 Or $Info[4] = $idComboBox2 Then
                 GUICtrlSetState($Info[4], $GUI_FOCUS)
          EndIf
EndFunc   ;==>MyFunc
发表于 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[4] = $idComboBox1 Or $Info[4] = $idComboBox2 and _IsPressed(2) Then
                        GUICtrlSetState($Info[4], $GUI_FOCUS)
                        _GUICtrlComboBox_ShowDropDown($Info[4], True)
                EndIf
                
                Switch GUIGetMsg()
                        Case $GUI_EVENT_CLOSE, $idClose
                                ExitLoop
                        Case $idComboBox1
 
                        Case $idComboBox2
 
 
                EndSwitch
        WEnd
        GUIDelete($hGUI)
EndFunc   ;==>Example

评分

参与人数 1金钱 +15 收起 理由
heroxianf + 15 就是这个意思~ QQQ

查看全部评分

发表于 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[4]
                    Case $idComboBox1
                        GUICtrlSetState($idComboBox1, $GUI_FOCUS)
                        _GUICtrlComboBox_ShowDropDown($Info[4], True)
                    Case $idComboBox2
                        if _GUICtrlComboBox_GetDroppedState($idComboBox1)=False then
                        GUICtrlSetState($idComboBox2, $GUI_FOCUS)
                        _GUICtrlComboBox_ShowDropDown($Info[4], True)
                        endif
                EndSwitch
                
                Switch GUIGetMsg()
                        Case $GUI_EVENT_CLOSE, $idClose
                                ExitLoop
                        Case $idComboBox1

                        Case $idComboBox2


                EndSwitch
        WEnd
        GUIDelete($hGUI)
EndFunc   ;==>Example

评分

参与人数 1金钱 +10 收起 理由
heroxianf + 10 虽然不是我想要的,你这个也不错~

查看全部评分

 楼主| 发表于 2017-6-6 15:02:24 | 显示全部楼层
回复 25# kk_lee69

你这个我运行没有效果呢  AU3 版本是 3.3.12
 楼主| 发表于 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[4] = $idComboBox1 Or $Info[4] = $idComboBox2 And _IsPressed(2) Then
                        GUICtrlSetState($Info[4], $GUI_FOCUS)
;~                         _GUICtrlComboBox_ShowDropDown($Info[4], True)
                        GUICtrlSetState($Info[4], $GUI_FOCUS)
                EndIf

                Switch GUIGetMsg()
                        Case $GUI_EVENT_CLOSE, $idClose
                                ExitLoop
                        Case $idComboBox1

                        Case $idComboBox2


                EndSwitch
        WEnd
        GUIDelete($hGUI)
EndFunc   ;==>Example
 楼主| 发表于 2017-6-6 15:07:58 | 显示全部楼层
回复 25# kk_lee69


    KK  29楼是我想要的结果,  是不是我描述有问题啊~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-8 13:58 , Processed in 0.076921 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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