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;
在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;