Главная страницаОбратная связьКарта сайта

Проверка ситуации Выход За Границы Списка при нажатии правой кнопки на списке

При нажатии правой кнопки на компоненте TListBox вызывается PopUpMenu, но все пункты этого меню должны быть применены к тому элементу в списке, на котором и была нажата кнопка. Этот элемент может не быть в данный момент текущим ( то есть выделенным) и вообще, правая кнопка может быть нажата на той части компоненты, где реальный список уже закончился. Данная задача может быть решена следующим образом:

Обрабатывается событие TListBox.onMouseDown


procedure TMain.UserListMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Point: TPoint;
  I: Integer;
const
  NoHit = -1;
begin
  if Button = mbRight then
  begin
    // Если нажата правая кнопка мыши, выяснить, не попал ли курсор
    // на элемент списка UserList
    Point.X := x;
    Point.Y := y;
    I := UserList.ItemAtPos(Point, True);
    if not (i = NoHit) then
    begin
      // курсор попал на элемент списка с номером i
      // принудительно назначаем его текущим, т.е. отмеченным
      UserList.ItemIndex := I;
      TListBox(Sender).PopUpMenu.AutoPopup := True;
    end
    else // курсор промахнулся , нет смысла активизировать меню
      TListBox(Sender).PopUpMenu.AutoPopup := False;
  end;
end;


Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация по разработке на Delph - "Проверка ситуации Выход За Границы Списка при нажатии правой кнопки на списке", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2024 Дискета.info