假设我要从一大堆英国城镇中选择“伦敦”

设置

Combo1.AutoComplete := true;
Combo1.Style := csDropdown;


如果我输入“ l”,然后输入“ o”,然后输入“ n”,则它首先选择以“ l”开头的第一项,然后选择以两个字母“ lo”开头的第一项,然后选择以“ lon”开头的第一项。这正是我想要的行为-很好。

但是,无论是否在列表中,我都可以输入我喜欢的任何文本-这很糟糕。

设置

Combo1.AutoComplete := true;
Combo1.Style := csDropdownList;


我无法输入我喜欢的任何文本,只能从列表中选择一个项目-很好。

但是现在,如果我输入“ l”,然后输入“ o”,然后输入“ n”,则它首先选择以“ l”开头的第一项,然后选择以“ o”开头的第一项,并选择以“ n”开头的第一项,而不是全部使用三个字母并选择以“ lon”开头的第一项。

我如何一次达到两个目标?

即,我希望仅限于从列表中选择项目,而且还可以开始输入并选择到目前为止我输入的所有字母。

最佳答案

使用第二个选项

Combo1.AutoComplete := true;
Combo1.Style := csDropdownList;


并将自动完成延迟从默认的500增加到更大一点,以使用户有时间在自动完成开始之前键入第二个和第三个等字符。

10-08 19:25