delphi: 组合框搜索文本与项目文本大小写相同

delphi: combobox search text same as item text case

在delphi中,可以添加不同大小写的组合框项目(在我的例子中是大写)。 `

ComboBox1.Items.Add('SYDNEY');
ComboBox1.Items.Add('MOSCOW');
ComboBox1.Items.Add('BERLIN');
ComboBox1.Items.Add('BERN');
ComboBox1.Items.Add('PARIS');

`

但是当尝试搜索时,组合框文本与项目大小写类型不同

并将作为 'bERLIN' 而不是 'BERLIN' 插入到数据库中。

UniQuery1.SQL.Add('INSERT INTO login (id,user) values (10,'''+ComboBox1.text+''')');

有没有办法自动将文本更改为实际项目大小写

在您的示例中,所有城市名称都是大写的。因此你确实可以使用 UpperCase() 评论中建议的功能。

但是,更通用的解决方案是改为检查 if ItemIndex <> -1表示确实选中了一个item然后使用 Items[ItemIndex] 存储在数据库中而不是 Text 属性.


评论后编辑:

要更新 Text 属性 以及选择,试试这个:

procedure TForm20.ComboBox1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  ss, sl: integer;
  SelectedItemString: string;
begin
  with ComboBox1 do
  begin
    ss := SelStart;
    sl := SelLength;
    if ItemIndex <> -1 then
      SelectedItemString := Items[ItemIndex]
    else
      SelectedItemString := Text;
    Text := SelectedItemString;
    SelStart := ss;
    SelLength := sl;
  end;
  Key := 0;
end;