Foxtable(狐表)用户栏目专家坐堂 → [求助]不用组合键达到输入助手的高级筛选功能


  共有4582人关注过本帖树形打印复制链接

主题:[求助]不用组合键达到输入助手的高级筛选功能

美女呀,离线,留言给我吧!
找到没重的名
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:129 积分:2193 威望:0 精华:0 注册:2016/11/8 6:22:00
[求助]不用组合键达到输入助手的高级筛选功能  发帖心情 Post By:2017/5/23 7:20:00 [只看该作者]

输入助手的高级筛选功能,必须通过ctrl+enter才能调用。但是我想实现输入任意字符不用通过组合键就直接出现列表的功能。
我看到有人提到这个问题,但回复是效率的问题,没有给出解决方法。我希望可以给出解决方法,哪怕是给个大概给个思路,让我可以用代码写出来。

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/23 9:07:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/23 9:11:00 [只看该作者]

试试这个

 

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


 回到顶部
美女呀,离线,留言给我吧!
找到没重的名
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:129 积分:2193 威望:0 精华:0 注册:2016/11/8 6:22:00
  发帖心情 Post By: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("数据") & "|"的加号 结果就不能正常显示列表了

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105869 积分:538402 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/22 10:40:00 [只看该作者]

这里+=是&=的意思,字符串的连接符可以使用&和+,区别是&可以自动转换类型,+不能用在数值和字符之间的连接

a &= 1

就是

a = a & 1

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

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

 回到顶部
美女呀,离线,留言给我吧!
找到没重的名
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:129 积分:2193 威望:0 精华:0 注册:2016/11/8 6:22:00
  发帖心情 Post By:2017/7/22 10:47:00 [只看该作者]

谢谢老师秒回复,我再揣摩一下。

 回到顶部
美女呀,离线,留言给我吧!
找到没重的名
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:129 积分:2193 威望:0 精华:0 注册:2016/11/8 6:22:00
  发帖心情 Post By: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

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/26 23:26:00 [只看该作者]

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

 

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


 回到顶部
美女呀,离线,留言给我吧!
找到没重的名
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:129 积分:2193 威望:0 精华:0 注册:2016/11/8 6:22:00
  发帖心情 Post By:2017/7/26 23:31:00 [只看该作者]

谢谢老师!
我主要还是想知道,按了回车键应该 总应该执行一段代码,让所选结果赋值到单元格。为什么没有呢?
我知道msgbox(1) 是用来测试代码的,可我为什么按了回车键,不出现提示框1呢?

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/27 9:18:00 [只看该作者]

 回复9楼,这个是下拉窗口的问题,按下回车,默认是会触发关闭窗口的。无法在事件里控制。

 回到顶部
总数 12 1 2 下一页