在样式为csOwnerDrawFixed的TComboBox后代组件上实现“在键入时查找”行为的正确方法是什么?
答案 0 :(得分:1)
...在OnTimer中你会写下你的搜索引擎。确保这里的第一行是timIncSearch.Enabled:= False;另外,因为你使用csOwnerDrawFixed,也许最好强制重新控制你的控件。
顺便说一下, - 只是猜测,因为你没有给我们很多细节 - 也许你必须将OnEnter和OnExit事件挂钩到自定义打开并关闭DropDown列表。 (Normaly,这是通过相应地设置AutoDropDown属性来实现的)
with timIncSearch do
begin
Enabled:=False;
Enabled:=True;
end;
...在这里也要小心,也许你必须有一个'case Key of'构造来单独处理#13(或其他)。
其他提示:
答案 1 :(得分:0)
首先,您需要决定是否需要“* my_string *”或“my_string *”功能,这意味着决定是在字符串内搜索还是从头开始搜索。 如果你想出来了,那么你必须修改在组合框中输入的所有单词的索引,并在每次击键后搜索它。 我不认为处理OnTimer是一种正确的方法。我宁愿使用“OnChange”或类似的东西。 您可以使用sorted(dupignore)TStringList执行此操作,也可以使用哈希表构建索引(实现取决于您)。 该体系结构取决于组合可以包含的最大字符串数。如果它是一个重要的数字,你可以使用哈希表(一个哈希Cardinal指向多个索引:数组,TList ...)