powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TListView.OnChange - двойное срабатывание
6 сообщений из 6, страница 1 из 1
TListView.OnChange - двойное срабатывание
    #39661709
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то меня интересует ситуация, когда просто меняется выбранная строка в режиме vsReport.
Когда кликаю на другую строку, вот этот код отрабатывает трижды, причем 1 и 3-й разы дают одинаковый результат.
Код: pascal
1.
2.
3.
4.
if Change = ctState then
	showmessage( 'change= '+ IntToStr( Change ) + CrLf +
                 'nil selected= ' + BoolToStr( lv.Selected = nil ) + CrLf +
                 'item selected= ' + BoolToStr( Item = lv.Selected ) );


Как я понимаю, сначала состояние меняется с выбранного на невыбранный, потом с невыбранного на новый выбранный элемент списка. Но как узнать, что это именно новый выбранный, а не покидаемый старый?

Надеюсь, понятно объяснил.
...
Рейтинг: 0 / 0
TListView.OnChange - двойное срабатывание
    #39661714
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала воспроизведи на чистом проекте. Не получится - ищи свой код, который меняет
выбранность пункта.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TListView.OnChange - двойное срабатывание
    #39661729
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вполне универсальный ответ.
Но, как и любая универсальная штуковина, практически бесполезен в конкретном случае.

У меня нет никаких посторонних обработок ListView.
И в чистом проекте (да, я его таки создал) все повторилось как и написано ранее.
...
Рейтинг: 0 / 0
TListView.OnChange - двойное срабатывание
    #39661741
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный ВасяНо как узнать, что это именно новый выбранный, а не покидаемый старый?Item.Focused? Или тупо сохранять "его" в переменной ?
...
Рейтинг: 0 / 0
TListView.OnChange - двойное срабатывание
    #39661752
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
...
Рейтинг: 0 / 0
TListView.OnChange - двойное срабатывание
    #39661827
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Listview, как и Combobox, местами сделан очень коряво. Самый простой вариант - сохранять предыдущий элемент. Можно даже обернуть это в класс-наследник, выделить в отдельный юнит и с помощью трюка подмены класса иметь этот класс-наследник даже для визуально кинутых на форму компонентах. Но надо помнить, что фокусированного элемента может и не быть, а также проследить случай, когда фокусированный элемент удаляется.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TListView.OnChange - двойное срабатывание
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]