Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

Сервис для компонентов



Вернуться к списку функций
 Автозаполнение строки ввода ComboBox в момент набора текста

 Прислал: lipskiy (Санкт-Петербург) ( 10 мая 2002 г. )
©  Собственное написание (Сергей Кириллов)
 Описание:
Процедура выполняет операцию автозаполнения текста по аналогии с
вводом адреса в Internet Explorer - при наборе строки автоматически
вставляется первая совпадающая с набранной строка из списка ComboBox.
Легко переделать для TEdit и подобных.
Параметр LastLength должен быть объявлен глобальной переменной -
он исключает автозаполнение при удалении символов в строке.

 Зависимости:
StdCtrls, SysUtils

 Ограничения:
Проверено под D5 и Win2k, должно работать везде без ограничений

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Автозаполнение строки ввода ComboBox в момент набора текста

Процедура выполняет операцию автозаполнения текста по аналогии с
вводом адреса в Internet Explorer - при наборе строки автоматически
вставляется первая совпадающая с набранной строка из списка ComboBox.
Легко переделать для TEdit и подобных.
Параметр LastLength должен быть объявлен глобальной переменной -
он исключает автозаполнение при удалении символов в строке.

Зависимости: StdCtrls, SysUtils
Автор:       lipskiy, lipskiy@mail.ru, ICQ:51219290, Санкт-Петербург
Copyright:   Собственное написание (Сергей Кириллов)
Дата:        10 мая 2002 г.
***************************************************************** }

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;


Вернуться к списку функций

Наверх ▲