在样式为csOwnerDrawFixed的TComboBox子系统组件上实现“find as you type”行为的正确方法是什么?如何在TComboBox子系统上键入时实现查找
7
A
回答
1
- 使用TTimer(我们称之为timIncSearch)。设置(在设计时)以下属性: 启用:= False;
区间:= 400; //凭经验找到 - 这是Windows资源管理器中使用的延迟
...在OnTimer中,您将编写您的搜索引擎。确保这里的第一行是timIncSearch.Enabled:= False;另外,因为您使用csOwnerDrawFixed,所以最好对您的控件重新执行一次。另外, - 只是猜测,因为你没有给我们很多细节 - 也许你必须挂钩OnEnter和OnExit事件来自定义打开和关闭DropDown列表。 (Normaly,这是由相应地设置AutoDropDown属性实现)
- 在你ComboBox.KeyPress你会写
- ,或许您必须挂钩(也?)中,onKeyDown(如果你想处理例如像BackSpace键,Del键,箭头等特殊键 - 采取。考虑到事件在键被按下时重复)和/或OnKeyUp(如果您想要进行与上述类似的处理,但是没有考虑到键盘的关键自动重复功能)。
with timIncSearch do
begin
Enabled:=False;
Enabled:=True;
end;
...还在这里照顾一下,也许你必须有一个'case key'构造来分别处理(或者其他)#13。
其他提示:根据您的情况
0
首先,您需要确定是否需要“* my_string *”或“my_string *”功能,这意味着决定是要在字符串内搜索还是从头开始搜索。 当你已经想通了,那么你将不得不buld在组合框中输入的所有单词的索引,并在每次击键后搜索它。 我不认为处理OnTimer是一个正确的方法。我宁愿使用“OnChange”或类似的。 你可以使用排序(dupignore)TStringList来完成它,也可以使用散列表来构建索引(实现由你决定)。 架构取决于您的组合可能包含的最大字符串数。如果它是一个显着的数字比你可以使用散列表(一个散列红衣主教指向多个索引:数组,TList ...)
相关问题
- 1. 变子系统实现
- 2. 键入ahead TComboBox csDropDownList; Delphi 10
- 3. 在现有系统上实现Homekit
- 4. 如何在mp3上实现查找
- 5. 实现电子邮件在android系统
- 6. 系统定时器实现
- 7. 如何查找系统卷?
- 8. 如何在WPF中实现系统级快捷键
- 9. 查找系统时钟 - Java
- 10. 如何实现一个电子邮件发布系统在php
- 11. 如何在二维粒子系统中实现方向?
- 12. Windows上的Unix应用子系统如何在程序集中实现系统调用?如
- 13. 在我的系统上查找NDK
- 14. 什么开源COM实现在嵌入式系统上工作?
- 15. 一般来说,我该如何实现实时监控系统?
- 16. 如何在Lazarus的TComboBox中按指定对象查找项目?
- 17. 如何在新的操作系统中实现计时?
- 18. 如何实现在线预订系统的超时
- 19. Gravatar实现进入用户系统
- 20. 如何实现日志系统
- 21. Android系统如何实现内部intentservice
- 22. 如何实现公告系统Laravel 5.4
- 23. 如何实现Lisp宏系统?
- 24. 如何实现模块化系统
- 25. 如何实现嵌套评论系统?
- 26. 如何实现结账/篮系统
- 27. 在实时系统上编程
- 28. 如何实现类似于linux系统时钟的c时钟
- 29. 如何使用输入子系统生成击键事件
- 30. 如何实现一个系统来嵌入对象?
取决于,你只是想实现“搜索键入”部分,而不显示对用户的任何反馈(例如,Firefox在长列表上执行的方式),还是想要显示一个显示当前搜索字符串的小型子控件? – dguaraglia 2008-10-02 00:05:48