Проверка ситуации Выход За Границы Списка при нажатии правой кнопки на списке
При нажатии правой кнопки на компоненте TListBox вызывается PopUpMenu, но все пункты этого меню
должны быть применены к тому элементу в списке, на котором и была нажата кнопка. Этот элемент
может не быть в данный момент текущим ( то есть выделенным) и вообще, правая кнопка может быть
нажата на той части компоненты, где реальный список уже закончился. Данная задача может быть
решена следующим образом:
Обрабатывается событие TListBox.onMouseDown
procedure TMain.UserListMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Point: TPoint;
I: Integer;
const
NoHit = -1;
beginif Button = mbRight thenbegin// Если нажата правая кнопка мыши, выяснить, не попал ли курсор// на элемент списка UserList
Point.X := x;
Point.Y := y;
I := UserList.ItemAtPos(Point, True);
ifnot (i = NoHit) thenbegin// курсор попал на элемент списка с номером i// принудительно назначаем его текущим, т.е. отмеченным
UserList.ItemIndex := I;
TListBox(Sender).PopUpMenu.AutoPopup := True;
endelse// курсор промахнулся , нет смысла активизировать меню
TListBox(Sender).PopUpMenu.AutoPopup := False;
end;
end;
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Проверка ситуации Выход За Границы Списка при нажатии правой кнопки на списке", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!