Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как передвинуть клавиатурный фокус в ListView?


Islander ©   (2004-08-22 12:14:00) 

Здравствуйте!

Есть ListView, в нем 5 элементов. Фокус стоит на 3-ем элементе. Я запоминаю его местонахождение через index := ListView.ItemIndex, затем очищаю ListView и заполняю заново другими данными (тоже 5 элементов). Теперь стоит задача вернуть фокус выделенному элементу. Что я и делаю ListView.ItemIndex := index. Все бы хорошо, и элемент выделяется, но...

Если фокус на ListView и я на клавиатуре нажимаю стрелку "вниз", то вдруг становится выделенным второй элемент, еще раз "вниз" - третий и т.д. А это говорит о том, что хоть и выделена 3-ий элемент, но вот фокус ввода находится на самомо пером. Почему так? Как можно этот самый фокус ввода с клавиатуры подвинуть?


Islander   (2004-08-22 12:55:00) [1]

У меня немного по-другому:

 LvwData.ItemIndex:=index;
 LvwData.Items [LvwData.ItemIndex].Focused := true;

Так все в порядке


ssk   (2004-08-22 12:50:00) [2]

>Правда из этого списка можно оставить только LItem.Focused, остальное не играет роли

в этом случае элемент будет выделен только рамкой фокуса и не будет подсвечен  так, как если бы его выбирали мышью или клавиатурой...


Islander   (2004-08-22 12:44:00) [3]

2ssk:

Спасибо, то что надо. Правда из этого списка можно оставить только LItem.Focused, остальное не играет роли. Еще раз спасибо!


ssk   (2004-08-22 12:31:00) [4]

а так?

var
 LItem: TListItem;
begin
 LItem := ListView1.Items[2];
 LItem.Selected := True;
 LItem.Focused := True;
 LItem.MakeVisible(True);
 ListView1.Update;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо