• 0
Авторизация  
tromani

Выделить TListViewItem нажатием правой кнопки мыши

Вопросы

Всем привет, если кто знает как выделить Item в ListView по координатам или чтоб Item выделялся после нажатия на правую кнопку мыши, спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 ответа на этот вопрос

  • 0

Для стандартного ListView я пользуюсь вот таким кодом (только для фиксированной высоты итемов):

var
  indx: Integer;
  ....
  indx := Trunc((ListView.AbsoluteToLocal(Point).Y + ListView.ScrollViewPos) / ListView.ItemAppearance.ItemHeight);
  if (indx >= 0) and (indx <= ListView.Items.Count - 1) then
    ListView.ItemIndex := indx;

А если пользуетесь ModernLV, то можно так:

ListView.ItemIndex := ListView.FindItemByPosition(ListView.AbsoluteToLocal(Point).X, ListView.AbsoluteToLocal(Point).Y);

 

где Point - это координаты нужной точки

Point: TPointF

 

Изменено пользователем sinuke

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

первый вариант не пойдет там Header/Footer разная высота с основным Item, к сожалению и количество Header чтоб посчитать надо перелапатить получается весь source

FindItemByPosition такого или подобного свойства не нашел у себя. видимо никак

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
40 минут назад, tromani сказал:

первый вариант не пойдет там Header/Footer разная высота с основным Item, к сожалению и количество Header чтоб посчитать надо перелапатить получается весь source


FindItemByPosition такого или подобного свойства не нашел у себя. видимо никак

FindItemByPosition - вот тут можно найти https://github.com/rzaripov1990/ModernListView. просто скопировать два файла FMX.ListView.pas и FMX.ListView.Types.pas в папку с проектом

да и высоты всех итемов (и футеров и хидеров) тоже можно узнать. самое просто - циклом пройтись и прибавлять к некой переменной высоту текущего итема. как только эта сумма станет больше локальной координаты, то найден нужный итем

Изменено пользователем sinuke

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу