Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 559
от 11.08.2006, 22:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 355, Экспертов: 46
В номере:Вопросов: 2, Ответов: 4


Вопрос № 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 очищать?

Приложение:

Отправлен: 06.08.2006, 17:00
Вопрос задал: Дмитрий Александрович (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное