Внешний вид сайта:

Автопоиск в TComboBox

Простое решение, которое Вы можете приспособить под Ваши требования. Не забудьте установить свойство Sorted в True. Добавьте переменную в секцию var Вашей формы:
var
  lastKey: Word;

 Поместите следующие строки в событие OnChange Вашего TCombobox:

procedure TForm1.AutoCompleteChange(Sender: TObject);
var
  SearchStr: string;
  retVal: integer;
begin
  // копируем образец поиска
  SearchStr := (Sender as TCombobox).Text;
  // backspace: VK_BACK или $08
  if lastKey = VK_BACK then
  begin
    retVal := (Sender as TCombobox).Perform(
        CB_FINDSTRING, -1, LongInt(PChar(SearchStr)));
    if retVal > CB_Err then
    begin
      (Sender as TCombobox).ItemIndex := retVal;
      (Sender as TCombobox).SelStart := Length(SearchStr);
      (Sender as TCombobox).SelLength :=
      (Length((Sender as TCombobox).Text) - Length(SearchStr));
    end; // retVal > CB_Err
  end; // lastKey VK_BACK
  // сбросим lastKey
  lastKey := 0;
end;

Поместите следующие строки в событие OnKeyDown Вашего TCombobox:

procedure TForm1.AutoCompleteKeyDown(
    Sender: TObject; var Key: Word;
    Shift: TShiftState);
begin
  lastKey := Key;
end;

Комментарии

Нет комментариев. Ваш будет первым!