Lazarus. Один PopuMenu для нескольких элементов.

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Lazarus. Один PopuMenu для нескольких элементов.

Сообщение KOL48 » 16.06.2010 15:53:12

Здравствуйте.

Кратко условие задачи. На форме имеется несколько элементов Shape. При левом клике на каждом элементе появляется падающее меню, состоящее из четырех пунктов. По каждому пункту будет запускаться системный браузер, в адресную строку которого будет подставляться IP-адрес в зависимости от кликнутого шейпа.

Вопрос: можно ли использовать один единственный элемент PopupMenu для обработки событий от каждого шейпа? Если да, то каким образом. Как PopupMenu узнает от какого Shape пришло событие?

Использование элементов Shape желательно, но не обязательно. Сойдут и Label.

Фрагменты кода, ссылки на теорию категорически приветствуются.

Спасибо.
KOL48
новенький
 
Сообщения: 14
Зарегистрирован: 16.04.2010 10:10:48

Re: Lazarus. Один PopuMenu для нескольких элементов.

Сообщение скалогрыз » 16.06.2010 16:06:28

KOL48 писал(а):Вопрос: можно ли использовать один единственный элемент PopupMenu для обработки событий от каждого шейпа? Если да, то каким образом. Как PopupMenu узнает от какого Shape пришло событие?

повесь один общий обработчик OnMouseDown для всех шейпов.
и проверяй - если была нажата правая кнопка мышки, то запоминай какой шейп был нажат.
Здесь же можешь заполнять PopupMenu как тебе будет угодно.

Код: Выделить всё
procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; ...);
begin
  if Button = mbRight then begin
    PressedShape:=Sender as TShape;
    //сейчас вылетит птичка!
    ...
  end;
end;


на момент появления PopupMenu на экране, ты будешь знать (в PressedShape) кто именно был нажат.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Lazarus. Один PopuMenu для нескольких элементов.

Сообщение KOL48 » 16.06.2010 16:21:03

А переменная PressedShape какого типа?
KOL48
новенький
 
Сообщения: 14
Зарегистрирован: 16.04.2010 10:10:48

Re: Lazarus. Один PopuMenu для нескольких элементов.

Сообщение скалогрыз » 16.06.2010 16:28:21

KOL48 писал(а):А переменная PressedShape какого типа?


Изображение TShape
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru