Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2015, 17:03   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
Вопрос Поиск в ListView по первому символу

Доброго времени суток!
Есть ListView с Items
Код:
var
  Item: TListItem;
begin
  Item := ListView1.Items.Add;
  Item.Caption := '1';
  Item := ListView1.Items.Add;
  Item.Caption := 'а';
  Item := ListView1.Items.Add;
  Item.Caption := '3';
  Item := ListView1.Items.Add;
  Item.Caption := 'б';
  Item := ListView1.Items.Add;
  Item.Caption := '5';
  Item := ListView1.Items.Add;
  Item.Caption := 'в';
  Item := ListView1.Items.Add;
  Item.Caption := '7';
  Item := ListView1.Items.Add;
  Item.Caption := 'г';
  Item := ListView1.Items.Add;
  Item.Caption := '9';
  Item := ListView1.Items.Add;
  Item.Caption := 'гг';
  Item := ListView1.Items.Add;
  Item.Caption := 'ггг';
end;
Задача состоит в том, чтобы при активном ListView при нажатии клавиш на клавиатуре в ListView выделялись записи соответствующие этим клавишам. Например нажали на а и у нас выделилась самая первая запись из всего списка начинающегося на а и так далее.
Shouldercannon вне форума Ответить с цитированием
Старый 03.02.2015, 17:07   #2
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

Обрабатываете клавиатуру, запоминаете что ввели, делаете поиск, выделяете если нашли.
lomastr_ вне форума Ответить с цитированием
Старый 03.02.2015, 17:47   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Код:
procedure TForm1.ListView1KeyPress(Sender: TObject; var Key: Char);
var
  i: Integer;
begin
  for i := 0 to ListView1.Items.Count - 1 do
  begin
    if AnsiUpperCase(Copy(ListView1.Items[i].Caption, 1, 1)) = AnsiUpperCase(Key) then
    begin
      ListView1.ItemIndex := i;
      ListView1.Selected;
      Break;
    end;
  end;
end;
Вопрос. Как сделать скроллинг, если запись найдена в самом конце списка?

Последний раз редактировалось Shouldercannon; 03.02.2015 в 17:56.
Shouldercannon вне форума Ответить с цитированием
Старый 03.02.2015, 18:37   #4
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Вопрос. Как сделать скроллинг, если запись найдена в самом конце списка?
Есть такой метод у TListItem - MakeVisible...
kropotkina-alice вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск по первому символу shuhracharya Microsoft Office Access 4 16.06.2014 19:26
Поиск по введенному символу. Waaper БД в Delphi 8 11.01.2012 17:32
Поиск по символу _Irina_ БД в Delphi 4 02.06.2011 16:04
ПаскальЖ переменная равна первому символу массива Иван=) Помощь студентам 10 21.11.2010 17:12
Поиск по первому столбцу в Delphi Xeon332 Помощь студентам 2 09.11.2008 05:12