Автоматическое завершение вводимой фразы для TComboBoxDelphi , Компоненты и Классы , СпискиАвтоматическое завершение вводимой фразы для TComboBox
Оформил: DeeCo { Ever wondered how to make a combobox with autocomplete like the one in the explorer? The trick is in the CB_FINDSTRING API call. } var LastKey: Word; procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin LastKey := Key; end; procedure TForm1.ComboBox1Change(Sender: TObject); var Srch: string; ix: Integer; begin Srch := combobox1.Text; if LastKey = $08 then begin LastKey := 0; Exit; end; LastKey := 0; ix := combobox1.Perform(CB_FINDSTRING, - 1, Longint(PChar(Srch))); if ix > CB_ERR then begin combobox1.ItemIndex := ix; combobox1.SelStart := Length(Srch); combobox1.SelLength := (Length(combobox1.Text) - Length(Srch)); end; end; Привет! Я переведу текст на русский язык. Это фрагмент кода на Delphi, который реализует функцию автодополнения для компонента TComboBox. Идея заключается в использовании API-вызова CB_FINDSTRING для поиска совпадающих элементов в списке элементов комбо-бокса при вводе пользователем. Вот шаг за шагом, как это работает:
Альтернативное решение: Вместо использования API-вызова CB_FINDSTRING можно использовать метод Вот обновленный код, который демонстрирует это альтернативное решение:
Обратите внимание, что это код предполагает, что список элементов комбо-бокса не пуст. Если вам нужно обрабатывать случай, когда список элементов пуст, вам придется добавить дополнительную проверку и обработку ошибок. Автоматическое завершение вводимой фразы для TComboBox позволяет создавать комбо-боксы с автодополнением, используя API-вызов CB_FINDSTRING и обработку событий Change и KeyDown. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |