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

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

Свой ActionList


Страницы:   1 2 3

Kolan ©   (2007-04-03 11:46:00) 

Здравствуйте,
 Есть класс — наследник TAction. У него кроме Execute есть еще методы. Мне надо написать для него ActionList, чтобы можно было в дизайн тайме работать.
Что надо перекрыть в ActionList чтобы подменить тип Action'ов ?


Kolan   (2007-04-03 14:02:00) [21]

TKSoftWareWizzard = class( TComponent)

Вот допустим так.


Сергей М.   (2007-04-03 13:57:00) [22]

Ерунда какая-то ...

TActionList - это всего лишь контейнердля произвольныхTAction !


Kolan   (2007-04-03 13:54:00) [23]

> Ну и зачем нужен этот TKSoftWareWizzard ?

Мне нужно чтобы в нем(TKSoftWareWizzard) были экщены(например вперед, назад). Обработчики должны быть внутри TKSoftWareWizzard тк они всегда одинаково обрабытываются, а вот «подцепить» их нужно иметь возможность на любой контрол…


Сергей М.   (2007-04-03 13:42:00) [24]

Ну и зачем нужен этот TKSoftWareWizzard ?
Чем обычный TActionList не угодил ?


Kolan   (2007-04-03 13:25:00) [25]

Еще вопрос возник.

Если у меня есть компонент сполем TAction, которое он сам и создает.
Те что-то вроде вот этого:

 TKSoftWareWizzard = class(TActionList)
 private
   { Private declarations }
   FAction: TAction;
 protected
   { Protected declarations }
   procedure DoExecute(Sender: TObject);
 public
   { Public declarations }
   constructor Create(AOwner: TComponent); override;
 published
   { Published declarations }
   property Action: TAction read FAction write FAction;
 end;


constructor TKSoftWareWizzard.Create(AOwner: TComponent);
begin
 inherited;
 FAction := TAction.Create(Self);
 FAction.OnExecute := DoExecute;
end;


Как теперь сделать так, чтобы можно было на контролы «вешать» этот Action?

Смысл — событие должно обрабатываться TKSoftWareWizzard.


Kolan   (2007-04-03 13:03:00) [26]

Получилось — благодарствую, а то бы я такого напридумывал :)


Kolan   (2007-04-03 13:01:00) [27]

> Ты же о дизайн-тайм речь ведешь ?!

Да, точно, забыл :)


Сергей М.   (2007-04-03 12:44:00) [28]


> при запуске приложения


При запуске какого нафих приложения !?)
Ты же о дизайн-тайм речь ведешь ?!


Kolan   (2007-04-03 12:38:00) [29]

unit KWizzardActions;

interface
uses
 Classes, ActnList;

type
 TWizzardStepAction = class(TAction)
 strict private
   FShowEvent: TNotifyEvent;
 published
   property OnShow: TNotifyEvent read FShowEvent write FShowEvent;
 end;

implementation

initialization
 RegisterActions('Wizzard', [TWizzardStepAction], nil);
finalization
 UnRegisterActions([TWizzardStepAction]);

end.


Грит Invalid Action Registration при запуске приложения.


Сергей М.   (2007-04-03 12:34:00) [30]


> Те в инициализации модуля


Можно и там


Kolan   (2007-04-03 12:33:00) [31]

> В любом месте перед тем как юзер вызовет редактор списка
> акций

Те в инициализации модуля с моими Экшенами например — понятно.


Kolan   (2007-04-03 12:32:00) [32]

Да и где вызывать пока не понял :(


Сергей М.   (2007-04-03 12:31:00) [33]


> где вообще RegisterActions вызывать?


В любом месте перед тем как юзер вызовет редактор списка акций


Kolan   (2007-04-03 12:31:00) [34]

> instances of the action classes listed by AClasses,

Вот это. Ну да ладно, пока без умолчание поразбираюсь.


Сергей М.   (2007-04-03 12:26:00) [35]


> Вот тут мой класс, так? [TMyAction]


Да, так.


> Вообще не поня как этим пользоваться


Ну вот же в справке написано:

The Resource parameter lets you assign default values to the properties of the actions being registered. Resource is the class of a TDataModule descendant that contains instances of the action classes listed by AClasses, where the properties of those instances are set to the default values. This parameter can be set to nil (Delphi) or NULL (C++) if there is no need to assign default values.

Что тут не понятно ?


Kolan   (2007-04-03 12:25:00) [36]

И еще. А где вообще RegisterActions вызывать?


Kolan   (2007-04-03 12:22:00) [37]

> Что тебе там не понятно ?

var AClasses: array of TBasicActionClass
Вот тут мой класс, так? [TMyAction]

Resource: TComponentClass
Вообще не поня как этим пользоваться. Для чего это вроде понял…


Сергей М.   (2007-04-03 12:17:00) [38]


> 1. Как его теперь правильно зарегистрировать используя  
> RegisterActions?


В соответствии с описанием в справке. Что тебе там не понятно ?


> 2. Как теперь его создать в дизайн тайме?


Точно так же, как TAction. Разницы никакой.


Kolan   (2007-04-03 12:03:00) [39]

> см. RegisterActions()

Те допустим я сделал класс:
TMyAction = class(TAction)
published
 property OnShow …
end;


1. Как его теперь правильно зарегистрировать используя  RegisterActions?
2. Как теперь его создать в дизайн тайме?


Сергей М.   (2007-04-03 11:56:00) [40]

Ничего не надо перекрывать.
см. RegisterActions()


Страницы:   1 2 3

Наверх

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