Автопоиск в TComboBox
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;
Комментарии