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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2023, 19:58   #1
remus-xe2
Пользователь
 
Регистрация: 27.10.2017
Сообщений: 54
По умолчанию Выделить строку в ListView при OwnerData

Парни, перевожу софт на виртуальный listview, наткнулся на грабли....
Мне нужно выделить строки в таблице по определенному признаку, ранее делал так:
Код:
  for i := 0 to ClientList.Items.Count - 1 do
    if (ClientList.Items.Item[i].SubItems.Strings[GetColomn(clmn_Status)] <> _('ЗАПУЩЕН')) then
      ClientList.Items.Item[i].Selected := true
    else
      ClientList.Items.Item[i].Selected := false;
после перевода ListView в виртуальный режим этот код перестал работать...
Код:
 ClientList.Items.Item[i].Selected := true
после выполнения нечего не происходит, строка не выделяется...
(Ну условие разумеется выполняется там ошибки нету...)

Как программно выбрать элемент в листвью в виртуальном режиме ?
remus-xe2 вне форума Ответить с цитированием
Старый 03.12.2023, 14:11   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

если знаете, на какой строке у вас будет выделяться, то попробуйте вне цикла конкретную строку выделить . если и вне цикла не сработает, то дело в самом условии
Код:
if (ClientList.Items.Item[i].SubItems.Strings[GetColomn(clmn_Status)] <> _('ЗАПУЩЕН'))
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 03.12.2023, 14:19   #3
remus-xe2
Пользователь
 
Регистрация: 27.10.2017
Сообщений: 54
По умолчанию

да я пытался и просто строку выбрать
Код:
ClientList.Items.Item[0].Selected := true
без цикла и без условия...
и в цикле все строки выделить...
remus-xe2 вне форума Ответить с цитированием
Старый 03.12.2023, 14:26   #4
remus-xe2
Пользователь
 
Регистрация: 27.10.2017
Сообщений: 54
По умолчанию

пустой проект создал... кинул листвью, не работает )
Вложения
Тип файла: zip lv.zip (6.3 Кб, 1 просмотров)
remus-xe2 вне форума Ответить с цитированием
Старый 03.12.2023, 14:38   #5
remus-xe2
Пользователь
 
Регистрация: 27.10.2017
Сообщений: 54
По умолчанию

очень странно...
ListView1.setfocus;

помог... наверно проблем я еще много хапну с этим виртуальным списком...
remus-xe2 вне форума Ответить с цитированием
Старый 12.12.2023, 09:32   #6
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Цитата:
Сообщение от remus-xe2 Посмотреть сообщение
очень странно...
Ничего странного. В listview по-умолчанию поле HideSelection установлено в true, это есть в справке, из-за этого listview теряя фокус скрывает выделение. Так что
Код:
       YourListView.HideSelection:=False;
или установить HideSelection в false в дизайнтайме и выделение всегда будет отображаться. Однако оно будет серым, когда компонент не в фокусе. Так что фокус нужно будет установить самому.
DIONISKA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выделить элемент в ListView BLACK_RAIN Win Api 2 03.03.2017 10:36
Программно выделить строку в ListView and1733 C++ Builder 1 21.05.2013 08:37
Убрать автоскроллинг в ListView при OwnerData=true 3D Hunter Общие вопросы Delphi 3 08.12.2011 16:29
Как узнать индексы выделенных итемов в ListView при OwnerData? 3D Hunter Общие вопросы Delphi 3 02.10.2009 10:24
Как выделить всю строку в ListView MasterofCDM БД в Delphi 2 03.07.2008 16:13