0

当强制用户从下拉列表中进行选择时,我将组合框的样式设置为 csDropDownlist。 在此处输入图像描述

但是,以后的所有输入都只有一个字符。这意味着,用户不能通过键入多个字符来缩小组合中的搜索范围。那就没用了。

将样式设置为 csDropDown 时,您可以键入多个字符来缩小搜索范围, 在此处输入图像描述

但是您不再被迫从列表中进行选择

在此处输入图像描述

有没有办法结合这些行为?

4

1 回答 1

0

感谢您的所有投入。

我在这里找到了一个解决方法: How to both autocomplete and limit to list with Delphi TComboBox ,我做了一些修改:

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
var
 s, t: string;
i, l: Integer;
const CrLf = #13#10;
begin
 // Skip functional keys
 if Key < ' ' then
  Exit;

  key := upcase(key);

  // Get text which can be in the combo after key pressed
  i := ComboBox1.SelStart;
  l := ComboBox1.SelLength;
  t := ComboBox1.Text;
  s := Copy(t, 1, i) + Key;

  // Check is this text corresponds to the values list

  if pos(CrLf+s, CrLf+combobox1.Items.Text) > 0 then
  exit;


  Key := #0;
end;

现在它的工作原理完全符合预期,但我还没有测试过长的项目列表。

但是谢谢大家。

于 2017-06-15T14:47:07.947 回答