
29.06.2012, 00:12
|
 |
.
|
|
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
|
|
Открыть ComboBox:
Код:
ComboBox1.DroppedDown := True;
...
ComboBox1.Perform(CB_SHOWDROPDOWN, True, 0);
200 записей, не так много. Можно организовать как в браузере, выбор по первым введённым буквам.
Код:
procedure AutoInsertComboBoxItem(ComboBox: TCombobox; var LastLength: integer);
var
i, ln: integer;
begin
// Сравниваем длину текста, если новая длина меньше старой -
// значит было удаление символов и автоподбор не нужен
if Length(ComboBox.Text) <= LastLength then
begin
LastLength := Length(ComboBox.Text);
exit;
end;
// Запоминаем длину текста для следующего вызова процедуры
LastLength := Length(ComboBox.Text);
// Ищем в списке начала строк, совпадающие с введенным текстом
for i := 0 to ComboBox.Items.Count - 1 do
begin
// Для поиска с учетом регистра:
//if Copy(ComboBox.Items[i],1,Length(ComboBox.Text)) = ComboBox.Text then
// Для поиска без учета регистра:
if Copy(AnsiUpperCase(ComboBox.Items[i]), 1, Length(ComboBox.Text)) =
AnsiUpperCase(ComboBox.Text) then
begin
ln := length(ComboBox.Text);
// Вставляем текст
ComboBox.Text := ComboBox.Items[i];
// Выделяем добавленный блок текста
ComboBox.SelStart := ln;
ComboBox.SelLength := Length(ComboBox.Items[i]) - ln;
break;
end;
end;
end;
Пример использования:
Код:
var
Form1: TForm1;
EndL: integer;
implementation
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
AutoInsertComboBoxItem(ComboBox1, EndL);
end;
Взято из DelphiWorld.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
|