在TComboBox后代上键入时如何实现查找
时间:2020-03-06 15:00:07 来源:igfitidea点击:
在样式为csOwnerDrawFixed的TComboBox后代组件上实现"键入时查找"行为的正确方法是什么?
解决方案
- 使用一个TTimer(我们称它为timIncSearch)。设置(在设计时)以下属性:Enabled:= False;间隔:= 400; //根据经验找到-这是Windows资源管理器中使用的延迟
...然后在OnTimer中,我们将编写搜索引擎。确保此处的第一行是timIncSearch.Enabled:= False;另外,由于我们使用csOwnerDrawFixed,可能最好对控件进行重新绘制。
顺便说一句,只是猜测,因为我们没有提供很多细节,也许我们必须挂接OnEnter和OnExit事件以自定义打开和关闭DropDown列表。 (通常,这是通过相应地设置AutoDropDown属性来实现的)
- 在ComboBox.KeyPress中,我们将编写
用timIncSearch做 开始 启用:= False; 已启用:= True; 结束;
...在这里也要小心,也许我们必须具有" case Key of"构造以单独处理#13(或者其他任何因素)。
其他提示:
- 根据情况,也许我们必须钩住(也?)OnKeyDown(如果我们要处理特殊键,例如BackSpace,Del,Arrows等-考虑到事件在按下该键时会重复自身),并且/或者OnKeyUp(如果我们想执行与上述类似的处理,但又不考虑键盘的按键自动重复功能)。