Вниз
Скачать: CL | DM;

Где нажата кнопка   Найти похожие ветки 

← →
Sergey_b   (2006-09-29 16:01) [0]

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


← →
Elen ©   (2006-09-29 16:13) [1]

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


← →
Palladin ©   (2006-09-29 16:17) [2]

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


← →
Sergey_b   (2006-09-29 16:18) [3]


> Elen


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


← →
Elen ©   (2006-09-29 16:18) [4]

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


← →
Sergey_b   (2006-09-29 16:19) [5]


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

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


← →
Palladin ©   (2006-09-29 16:23) [6]

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


← →
Palladin ©   (2006-09-29 16:25) [7]

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


← →
Sergey_b   (2006-09-29 16:51) [8]


> Palladin

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


← →
Игорь Шевченко ©   (2006-09-29 16:55) [9]


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


Screen.ActiveForm ?


← →
Palladin ©   (2006-09-29 16:57) [10]

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


← →
Игорь Шевченко ©   (2006-09-29 16:58) [11]

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 17:11) [12]


> Эт ты зря.

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

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.027 c
15-1159026946
Alx2
2006-09-23 19:55
2006.10.15
"Раздумья ездового волка"


6-1148280538
Тфьу
2006-05-22 10:48
2006.10.15
TIdSMTP при отсылке в теме пишет ерунду...


15-1158749498
user666
2006-09-20 14:51
2006.10.15
Отладчик Delphi 8


2-1159637385
waaw
2006-09-30 21:29
2006.10.15
{$INCLUDE ...


2-1159158945
Gool
2006-09-25 08:35
2006.10.15
Панель в IE




   Наверх