以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]不用组合键达到输入助手的高级筛选功能  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=100988)

--  作者:找到没重的名
--  发布时间:2017/5/23 7:20:00
--  [求助]不用组合键达到输入助手的高级筛选功能
输入助手的高级筛选功能,必须通过ctrl+enter才能调用。但是我想实现输入任意字符不用通过组合键就直接出现列表的功能。
我看到有人提到这个问题,但回复是效率的问题,没有给出解决方法。我希望可以给出解决方法,哪怕是给个大概给个思路,让我可以用代码写出来。

--  作者:有点色
--  发布时间:2017/5/23 9:07:00
--  

 参考这个例子

 

http://www.foxtable.com/webhelp/scr/2465.htm

 


--  作者:有点色
--  发布时间:2017/5/23 9:11:00
--  

试试这个

 

下载信息  [文件大小:320.0 KB  下载次数:51]
图片点击可在新窗口打开查看点击浏览该文件:拼音_下拉窗口_示例.table


--  作者:找到没重的名
--  发布时间:2017/7/22 10:32:00
--  
在这个例子里,有两段代码 都有+= 这样的写法

 

表A_ChangeEdit

 

If e.Col.Name = "第一列" Then \'如果编辑的是客户ID列

    If e.Col.DroppedDown Then \'如果下拉窗口已经打开

        Dim items As String = ""

        For Each dr As DataRow In DataTables("表B").Select("拼音 like \'*" & e.Text & "*\'")

            items += dr("数据") & "|"

        Next

        Dim lsx As WinForm.ListBox = Forms(e.Col.DropForm).Controls("ListBox1")

        lsx.ComboList = items.Trim("|")

    End If

End If


我曾试着去掉上面代码 items += dr("数据") & "|"的加号 结果就不能正常显示列表了

请问老师 这个加号在此有何特殊作用?


--  作者:有点蓝
--  发布时间:2017/7/22 10:40:00
--  
这里+=是&=的意思,字符串的连接符可以使用&和+,区别是&可以自动转换类型,+不能用在数值和字符之间的连接

a &= 1

就是

a = a & 1

的意思,就是为了把字符串连接起来

[此贴子已经被作者于2017/7/22 10:58:22编辑过]

--  作者:找到没重的名
--  发布时间:2017/7/22 10:47:00
--  
谢谢老师秒回复,我再揣摩一下。
--  作者:找到没重的名
--  发布时间:2017/7/26 23:22:00
--  

这个例子中还有一段代码,当中-= 和 +=有什么特殊意义?我觉得和&有点不太一样,请老师解释下。

还有这两行代码    

            ElseIf e.KeyCode = Keys.Enter

            msgbox(1)

 代码按下回车键,为什么是要弹出messagebox?可是当我按下回车键,也没有提示1啊?

谢谢老师!

 

表A_KeyDownEdit

 

If e.Col.Name = "第一列" Then \'如果编辑的是客户 ID列

    If e.Col.DroppedDown Then \'如果下拉窗口已经打开

        Dim lsx As WinForm.ListBox = Forms(e.Col.DropForm).Controls("ListBox1")

       

        If e.KeyCode = Keys.Up Then \'如果按下的是上箭头按键

            If lsx.SelectedIndex > 0 Then

                lsx.SelectedIndex -= 1

            End If

            e.Cancel = True

        ElseIf e.KeyCode = Keys.Down Then \'如果按下的是下箭头按键

            If lsx.SelectedIndex < lsx.Items.Count - 1 Then

                lsx.SelectedIndex += 1

            End If

            e.Cancel = True

        ElseIf e.KeyCode = Keys.Enter

msgbox(1)

        End If

    End If

End If

 


--  作者:有点甜
--  发布时间:2017/7/26 23:26:00
--  

+= 1 或者 -= 1 是为了移动焦点选择下一行、上一行。

 

msgbox是测试代码,你可以删除。


--  作者:找到没重的名
--  发布时间:2017/7/26 23:31:00
--  
谢谢老师!
我主要还是想知道,按了回车键应该 总应该执行一段代码,让所选结果赋值到单元格。为什么没有呢?
我知道msgbox(1) 是用来测试代码的,可我为什么按了回车键,不出现提示框1呢?

[此贴子已经被作者于2017/7/26 23:58:39编辑过]

--  作者:有点甜
--  发布时间:2017/7/27 9:18:00
--  
 回复9楼,这个是下拉窗口的问题,按下回车,默认是会触发关闭窗口的。无法在事件里控制。