找回密码
 加入
搜索
查看: 2963|回复: 8

[网络通信] 输入框响应输入问题【已解决】

[复制链接]
发表于 2020-4-18 14:24:47 | 显示全部楼层 |阅读模式
本帖最后由 duxing 于 2020-4-20 08:54 编辑
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
        Local $hWndFrom, $iIDFrom, $iCode, $hWndCombo,$hWndCombo1
        If Not IsHWnd($Input24) Then $hWndCombo = GUICtrlGetHandle($Input24)
                ;If Not IsHWnd($Input25) Then $hWndCombo1 = GUICtrlGetHandle($Input25)
        $hWndFrom = $ilParam
        $iIDFrom = BitAND($iwParam, 0xFFFF)
        $iCode = BitShift($iwParam, 16)
        Switch $hWndFrom
                Case $Input24, $hWndCombo
                        Switch $iCode
                                                        Case $CBN_EDITUPDATE
                                                                
                                                Local $sQueryText = ''
                        Local $sCondition, $hQuery, $aRow
                        $sColumn_Name = GUICtrlRead($Combo12)
                                                if $sColumn_Name ="编码" then $sColumn_Name ="column1"
                                                if $sColumn_Name ="描述" then $sColumn_Name ="column2"
                                                if $sColumn_Name ="简称" then $sColumn_Name ="column3"
                                                if $sColumn_Name ="分类" then $sColumn_Name ="column4"

                     $sCondition = $sColumn_Name & ' LIKE "%' & _GUICtrlComboBox_GetEditText ( $Input24) & '%"'

                        GUICtrlSendMsg($ListView1, 4105, 0, 0)
                        _SQLite_Open($sSQLite_DB_Path)

                  _SQLite_Query(-1, 'SELECT * FROM TestTable WHERE ' & $sCondition, $hQuery)
                                                ;GUICtrlCreateListViewItem($sQueryText, $ListView1)
                        While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK
                                $sQueryText = $aRow[0] & '|' & $aRow[1] & '|' & $aRow[2] & '|' & $aRow[3] & '|' & $aRow[4] & '|' & $aRow[5]

                                GUICtrlCreateListViewItem($sQueryText, $ListView1)

                        WEnd
                        _SQLite_Close()
                                        

 EndSwitch

输入框输入字符,自动SQLITE查询列出,不知道会不会因为过快经常会列出很多无用结果,可有人遇到过?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2020-4-18 16:07:34 | 显示全部楼层
floor6ggg 发表于 2020-4-18 15:49
无法进行调试,猜测。。。。。。。。。。。。

1.在上面贴出的代码的20行,对21行用到的_GUICtrlComboBox ...

01.consolewrite(_GUICtrlComboBox_GetEditText ( $Input24) & @CRLF) 这个测试过,是我需要的数值,而且查询结果前面部分也是无误的。
我觉得可能问题是出在SQLITE查询状态没结束,又重复打开再查询
发表于 2020-4-18 15:49:22 | 显示全部楼层
本帖最后由 floor6ggg 于 2020-4-18 15:52 编辑

无法进行调试,猜测。。。。。。。。。。。。

1.在上面贴出的代码的20行,对21行用到的_GUICtrlComboBox_GetEditText ( $Input24)这一个指标consolewrite,然后自己进行监测,看看每一次取得的数值是不是自己需要的:
consolewrite(_GUICtrlComboBox_GetEditText ( $Input24) & @CRLF)
2.实在不行的话,对21行用到的_GUICtrlComboBox_GetEditText ( $Input24)进行限定和判断,只有当stringlen(_GUICtrlComboBox_GetEditText ( $Input24))>2的时候才触发下一步动作:
if stringlen(_GUICtrlComboBox_GetEditText ( $Input24))>2 then
。。。。。。。。。。。。。。。。。。根据自己的需要调整字符长度………………
发表于 2020-4-18 16:33:43 | 显示全部楼层
数据库查询这块不熟,坐等高人出手。。。。
没得调试,只能凭感觉。。。个人感觉,试一下第23行的注销一下看看。。。?我能想到的最后一个怀疑对象。。。。
 楼主| 发表于 2020-4-18 16:49:34 | 显示全部楼层
我要是在$Input24 中输入字符慢慢打,结果就是正常的,一打快就不行,咋样才能限制下增加个查询延迟?
发表于 2020-4-18 21:22:15 | 显示全部楼层
输入框是input控件而不是combo控件?试试:
第11行的: Case $CBN_EDITUPDATE  更改为
Case $EN_CHANGE

还不行的话,真得撤了^^^^^^^
发表于 2020-4-19 10:00:43 | 显示全部楼层
本帖最后由 chzj589 于 2020-4-19 10:08 编辑
duxing 发表于 2020-4-18 16:49
我要是在$Input24 中输入字符慢慢打,结果就是正常的,一打快就不行,咋样才能限制下增加个查询延迟?

这样试试看

Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
        #forceref $hWnd, $iMsg
        Local $hWndFrom, $iIDFrom, $iCode
        $hWndFrom = $ilParam
        $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
        $iCode = BitShift($iwParam, 16) ; Hi Word
        $a = GUIGetCursorInfo($WinMainSub2)
        Switch $iIDFrom
                Case $Input24
                        If $a[2] = 0 Then
                        _XRichEditxaD()
                        ;Else
                        EndIf
        EndSwitch
          Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND

Func _XRichEditxaD();搜索信息查询
        Local $sQueryText = ''
        Local $sCondition, $hQuery, $aRow
        $sColumn_Name = GUICtrlRead($Combo12)
        If $sColumn_Name = "编码" Then $sColumn_Name = "column1"
        If $sColumn_Name = "描述" Then $sColumn_Name = "column2"
        If $sColumn_Name = "简称" Then $sColumn_Name = "column3"
        If $sColumn_Name = "分类" Then $sColumn_Name = "column4"
        $sCondition = $sColumn_Name & ' LIKE "%' & _GUICtrlComboBox_GetEditText($Input24) & '%"'
        GUICtrlSendMsg($ListView1, 4105, 0, 0)
        _SQLite_Open($sSQLite_DB_Path)
        _SQLite_Query(-1, 'SELECT * FROM TestTable WHERE ' & $sCondition, $hQuery)
        ;GUICtrlCreateListViewItem($sQueryText, $ListView1)
        While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK
                $sQueryText = $aRow[0] & '|' & $aRow[1] & '|' & $aRow[2] & '|' & $aRow[3] & '|' & $aRow[4] & '|' & $aRow[5]
                GUICtrlCreateListViewItem($sQueryText, $ListView1)
        WEnd
        _SQLite_Close()
EndFunc   ;==>_XRichEditxaD






 楼主| 发表于 2020-4-20 08:39:02 | 显示全部楼层
floor6ggg 发表于 2020-4-18 21:22
输入框是input控件而不是combo控件?试试:
第11行的: Case $CBN_EDITUPDATE  更改为  

是combo控件
不能替换,替换就没响应了
 楼主| 发表于 2020-4-20 08:45:04 | 显示全部楼层
本帖最后由 duxing 于 2020-4-20 09:03 编辑
chzj589 发表于 2020-4-19 10:00
这样试试看
[au3]
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)

已解决,就是还没搞懂原理,$a = GUIGetCursorInfo($hGui1)?实际作用是不是就是加个延迟?
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
        Local $hWndFrom, $iIDFrom, $iCode, $hWndCombo,$hWndCombo1
        If Not IsHWnd($Input24) Then $hWndCombo = GUICtrlGetHandle($Input24)
                ;If Not IsHWnd($Input25) Then $hWndCombo1 = GUICtrlGetHandle($Input25)
        $hWndFrom = $ilParam
        $iIDFrom = BitAND($iwParam, 0xFFFF)
        $iCode = BitShift($iwParam, 16)
                 $a = GUIGetCursorInfo($hGui1)
        Switch $hWndFrom
                Case $Input24, $hWndCombo
                      
                                                If $a[2] = 0 Then _XRichEditxaD()

          EndSwitch
        Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 13:42 , Processed in 0.140633 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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