Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Где нажата кнопка


Sergey_b ©   (2006-09-29 16:01:00) 

Доброго времени суток всем.
В ActionManager определены действия, и вызываются они из разных форм(одни и те же). Как узнать на какой именно форме произошел вызов действия? В зависимости от этого меняется цель действия(откуда вызов, та форма и является целью).


Palladin   (2006-09-29 17:11:00) [1]


> Эт ты зря.

Эт точно, бо (только что проверенно и сообщается на правах tip :) ) если вызвать TAction.Execute суррогатом, то ActionComponent будет последний вызвавший Action компонент, либо Nil...

фигеть можно...


Игорь Шевченко   (2006-09-29 16:58:00) [2]

Palladin ©   (29.09.06 16:23) [6]

Эт ты зря. Вот например, есть куча форм, на тулбаре нажали кнопочку, данные надо взять из активной формы:

 if Screen.ActiveForm is TfrmExplorer then begin
   with TfrmExplorer(Screen.ActiveForm) do
     Properties1Click (Sender);
 end;


Palladin   (2006-09-29 16:57:00) [3]

ну вот уже интересней... подробности полезли наружу...
тогда открою страшную тайну, у TAction есть свойство ActionComponent


Игорь Шевченко   (2006-09-29 16:55:00) [4]


> Как узнать на какой именно форме произошел вызов действия?


Screen.ActiveForm ?


Sergey_b   (2006-09-29 16:51:00) [5]


> Palladin

Методы одинаковые, только данные берутся и возвращаются из формы, где нажата кнопка


Palladin   (2006-09-29 16:25:00) [6]

Рекомендую сделать два Action'а, общие моменты которых вывести в отдельный метод. Что-б много не писать :)


Palladin   (2006-09-29 16:23:00) [7]

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


Sergey_b   (2006-09-29 16:19:00) [8]


> Action'ы предназначены для назначения одинаковой реакции
> для разных контролов.

Это однозначно?
Пытаться не стоит?


Sergey_b   (2006-09-29 16:18:00) [9]


> Elen


Не то. Сендер создается экшенменеджером. Кнопочки на ActionToolBar. Есть несколько тулбаров на разных формах, но с одинаковыми экшн. Надо узнать на какой именно форме была нажата кнопка и, в зависимости от этого, передать  нужные параметры.


Elen   (2006-09-29 16:18:00) [10]

Пардон, чепуху горожу...


Palladin   (2006-09-29 16:17:00) [11]

Action'ы предназначены для назначения одинаковой реакции для разных контролов.


Elen   (2006-09-29 16:13:00) [12]

Поробовать обращаться к parent сендера, который передается в обработчик, и наверное при обращении нужно проверять класс родителя, а то ведь компонентик и в контейнере может быть


Наверх

Титульная страница Поиск, карта сайта Написать письмо