![]() |
![]() ![]() ![]() ![]() |
|
Автоматическое завершение вводимой фразы для 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 прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||