Вопрос № 51321: Добрый день, уважаемые Эксперты!!!
Вопрос такой: Как узнать на каком из компонентов был произведен щелчек правой кнопкой мыши при вызове popupmenu?
Поясню: на форме несколько TImage и popupmenu с обработчиком "убрать изображение" ка...Вопрос № 51327: Подскажите,пожалуйста!При установке компонента IconButton на Delphi 7 подсвечивается строка Controls, Forms, Menus, Graphics, Dialogs, DsgnIntf; и написано [FatalError] File not found:'DsgnIntf.dcu'.Почему?...
Вопрос
№ 51.321
Добрый день, уважаемые Эксперты!!!
Вопрос такой: Как узнать на каком из компонентов был произведен щелчек правой кнопкой мыши при вызове popupmenu?
Поясню: на форме несколько TImage и popupmenu с обработчиком "убрать изображение" как в обработчике узнать какой image очищать?
Отвечает: din
Здравствуйте, Дмитрий Александрович!
Если у вас к каждому элементу TImage привязана отдельное PopupMenu, то это делается просто, в данном случае получим имя компонента:
1. Объявляем глобальную переменную, например ACtiveImageName типа String
2. Объявляем в классе формы и создаем процедуру:
procedure TForm1.ImageContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
ActiveImageName:=(Sender as TImage).Name;
end;
3. Переопределяем всем TImage обработчик OnContextPopUp:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i := 0 to Form1.ControlCount -1 do
begin
if (Form1.Controls[i] is TImage) then
(Form1.Controls[i] as TImage).OnContextPopup := ImageContextPopup;
end;
end;
теперь переменная ActiveImageName перед вызовом PopupMenu будет получать имя текущего компонента класса TImage;
Удачи!
P.S. При желании можно все создавать динамически, код будет выглядеть более красиво и компактно.
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Студент)
Ответ отправлен: 06.08.2006, 20:12
Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Дмитрий Александрович!
У компонента PopupMenu есть свойство PopupComponent - это и есть компонент, который вызвал выпадающее меню
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 5-ый класс)
Ответ отправлен: 07.08.2006, 10:01 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо!!! Проверил - работает!!!! Действительно, все гениальное - просто!!!
Вопрос № 51.327
Подскажите,пожалуйста!При установке компонента IconButton на Delphi 7 подсвечивается строка Controls, Forms, Menus, Graphics, Dialogs, DsgnIntf; и написано [FatalError] File not found:'DsgnIntf.dcu'.Почему?
Отправлен: 06.08.2006, 19:01
Вопрос задал: Kondratev (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Савенко Вадим Иванович
Здравствуйте, Kondratev!
Смотрите вопрос 51023. Как раз об зтой проблеме.
Ответ отправил: Савенко Вадим Иванович (статус: 6-ой класс)
Ответ отправлен: 06.08.2006, 19:33 Оценка за ответ: 5 Комментарий оценки: Большое спасибо!Все установилось!
Отвечает: din
Здравствуйте, Kondratev!
Компонента написана не под эту версию делфей. В pas файле компонента в разделе Uses исправьте DsgnIntf на DesignIntf.
Удчаи!
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Студент)
Ответ отправлен: 06.08.2006, 19:42 Оценка за ответ: 5