Показать сообщение отдельно
  #4  
Старый 06.05.2022, 22:31
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Делал подобнцую штуку. Только так именно был поиск с начала строки, т.к. по результатам поиска в поле редактирования ComboBox вписвывася текст найденной строки и делалось выделение (select) текста после найденного отрезка. Как результат, при наборе с клавиатуры следующего символа происходила замена "хвоста" на введенный символ и поиск повторялся.
В твоем случае не понятно что выделять. Тут действительно можно только отфильтровать выпадающий список.

Код:
uses System.StrUtils;

procedure TForm1.InitCbDropList;
begin
  ComboBox1.Items.Clear;
  ComboBox1.Items.Add('Item1');
...
  ComboBox1.Items.Add('ItemN');
end;

procedure TForm1.ComboBox1Change(Sender : TObject);
var
  I : Integer;
  SL : TStringList;
begin
  If ComboBox1.Text = '' 
    Then InitCbDropList
    Else
      Begin
        SL := TStringList.Create;
       Try
         For I := 0 To ComboBox1.ITems.Count-1 Do
           If ContainsText(ComboBox1.ITems[i],ComboBox1.Text) Then
             SL.Add(ComboBox1.ITems[i]);
        ComboBox1.Items.Assign(SL);
       Finally
         SL.Free;
       End;
      End;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  InitCbDropList;
end;
Вот как то так...
Ответить с цитированием