带你玩转超级列表框 33 文件遍历器之即时搜索实现

avatar 2017年6月27日00:41:16 评论 2,629

加入VIP,可以享受无广告视频播放!更可享受教程提前看!详情猛戳:VIP介绍

这节课我们来密切结合我们的超级列表框,实现我们的文件遍历器的即时搜索功能的接入吧!


查找表项

在超级列表框自带的命令中,有一个命令格外引人注目,那就是“查找表项”,让我们来看一下它附带的帮助文档

调用格式: 〈整数型〉 对象.查找表项 (文本型 标题,[整数型 起始查找位置],[逻辑型 是否精确匹配],[整数型 列索引]) - 扩展界面支持库一->超级列表框

英文名称:Find

查找具有指定标题的表项,成功返回被找到表项的位置索引,失败返回 -1 。本命令为初级对象成员命令。

参数<1>的名称为“标题”,类型为“文本型(text)”。本参数指定欲查找表项的标题文本。

参数<2>的名称为“起始查找位置”,类型为“整数型(int)”,可以被省略。本参数指定查找表项的起始位置。如果本参数被省略,默认值为 0 ,即从首项开始查找。

参数<3>的名称为“是否精确匹配”,类型为“逻辑型(bool)”,可以被省略。本参数指定匹配标题文本时是否为精确匹配,如果本参数为假,则只要表项标题首部包含指定文本即认为匹配成功。如果本参数被省略,默认值为真。

参数<4>的名称为“列索引”,类型为“整数型(int)”,可以被省略。本参数仅在报表模式下有效,用于指定查找表项中的哪一列。如为 -1,表示查找所有列。如果本参数被省略,默认值为 0 ,即查找第一列。

我们可以清楚的发现易语言自带的这个命令有一个很明显的缺点,那就是只能搜索标题的列,也就是第一列,子列是无法进行搜索的。而且只能选择精确匹配或者内容开头匹配,无法进行中间匹配。这给我们的搜索个性化带来了极大的限制。因此我们通常不使用该命令来进行搜索。

怎么办呢?我们可以自己来扩展我们自己的个性化搜索嘛。

这就是我们下一部分要详细讲解的个性化的即时搜索的实现。


即时搜索实现

看看我是如何结合超级列表框实现即时搜索的。

被搜索的内容确定为什么呢?在本案例中,我会演示只搜索第一列——文件名。

因为是即时搜索,因此我们想营造编辑框内容改变,下面的超级列表框的显示内容就同步改变的效果。

所以我们可以考虑,在每次显示前,进行一次新的遍历。这是一种解决方案。

但是这么做会有一个小问题,就是你要搜索遍历的范围过大的时候,每次搜索内容改变就进行一次遍历,势必会极大影响搜索效率。

因此,我们可以考虑换一个思路,比如前面遍历完成后,自动初始化一下即时搜索功能,也就是将前面搜索到的结果保存到数组中。

然后在编辑框内容改变事件中,直接对该数据库数组进行搜索,提高效率。

因此我们需要定义一个搜索初始化命令来保存超级列表框内容,该命令可以封装起来。我们来演示把它封装到我们的扩展模块中。

请看我们的视频演示吧!


课后作业

课后作业:

请大家,根据视频所学,完成即时搜索功能的接入。测试一下,是否满足了你的需求呢?

如果有时间和精力,请思考一下要是我想搜索整个超级列表框的内容呢?我该怎么做?代码该如何写,你可以自己完成吗?


请务必完成作业之后再看下一课!

本案例——文件遍历器到本课为止就基本结束了。

下节课我们将对本案例进行总结。

 

 

 

以下是我们的视频教程:

在线观看:

 

 

高清源文件下载:

内容已经隐藏,请注册为本站会员后查看

 

 

 

 

感谢大家的收看,我们下期再见!

avatar

发表评论

您必须才能发表评论!