谷歌喜欢Delphi的编辑/组合控制?

Dan*_*rić 17 delphi combobox autocomplete

每个人都可能知道我的意思,但澄清控制需要:

  • 用户编辑文本时触发事件.该事件将提供SuggestionList:TStrings,您可以填写匹配/建议.
  • 如果SuggestionList不为空,则应显示下拉列表.
  • 与组合不同,控件不应尝试自动选择/自动完成或以其他方式影响编辑.

那么,是否有这样的Delphi编辑/组合控件?

Rob*_*edy 24

使用内置于所有Windows编辑控件的自动完成功能.

首先,根据需要填充TStrings对象.然后GetOleStrings用来创建一个TStringsAdapter包装它.(适配器不声明TStrings对象的所有权,因此您必须确保在适配器仍然存在时不要销毁它.)适配器为您提供了一个IStrings接口,您需要该接口,因为自动完成功能需要一个IEnumString接口提供完成比赛.呼唤_NewEnum那个.

接下来,调用CoCreateInstance创建一个IAutoComplete对象.调用其Init方法将其与编辑控件的窗口句柄相关联.如果您正在使用组合框,则向其发送cbem_GetEditControl消息以查找基础编辑窗口.

您可以在此时停止,自动完成应该自动完成.您可以根据需要禁用自动完成功能,也可以设置任意数量的自动完成选项.

你说你不想要自动完成,但在操作系统术语中,我认为你真正不想要的是自动追加,其中字符串的其余部分会在用户输入时自动输入编辑框,但是选择了进一步输入将覆盖它,如果所需的值短于其中一个匹配项,则用户需要删除多余的文本.

还有自动建议,显示建议的下拉列表.

您可以启用其中一个或两个选项.您不需要自己过滤建议列表; 自动完成对象IEnumString自行过滤列表.