В delphi можно добавлять элементы combobox в другом регистре (в моем примере - в верхнем регистре). `

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

`

combobox shows like that

Но при попытке поиска текст поля со списком отличается от типа случая элемента

И будет вставлен в базу данных как «bERLIN» вместо «BERLIN».

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

Есть ли способ автоматически изменить текст на реальный регистр элементов

0
Mamed Aliyev 22 Дек 2019 в 12:40
Добавьте в q код, который вы используете для переноса текста поля со списком в поле базы данных. См. минимальный воспроизводимый пример
 – 
MartynA
22 Дек 2019 в 13:27
UniQuery1.SQL.Add ('INSERT INTO login (id, user) values ​​(10,' '' + ComboBox1.text + '' ')');
 – 
Mamed Aliyev
22 Дек 2019 в 13:38
1
UpperCase(ComboBox1.Text)
 – 
Delphi Coder
22 Дек 2019 в 13:44
Я отредактировал ваш вопрос, включив в него код из вашего комментария. Пожалуйста, всегда редактируйте (см. Кнопку редактирования слева) добавленную информацию в свой вопрос.
 – 
Tom Brunberg
22 Дек 2019 в 13:45

1 ответ

Лучший ответ

В вашем примере у вас есть все названия городов в верхнем регистре. Таким образом, вы действительно можете использовать функция UpperCase(), как предложено в комментарии.

Однако более общим решением было бы вместо этого проверить if ItemIndex <> -1 указывает, что элемент действительно выбран, а затем используйте 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;
3
Tom Brunberg 22 Дек 2019 в 15:34
Это может быть нижний или верхний регистр, это не имеет значения. Я хочу, combobox ищет его текст, если текст такой же, как items [..]. Text затем преобразует регистр в items.text
 – 
Mamed Aliyev
22 Дек 2019 в 14:55
1
Это бессмысленно. Либо вы используете ComboBox1.Text, чтобы вставить то, что пользователь фактически набрал , либо вы используете ComboBox1.Items[ComboBox1.ItemIndex], чтобы вставить то, что пользователь выбрал . Какой ты хочешь?
 – 
Remy Lebeau
22 Дек 2019 в 20:51