unit uModuleController; interface uses SysUtils, Classes, uModuleMenu, ImgList, Controls, ActnList, Menus; type TModuleController = class(TDataModule) private FDescription : String; FModuleName : String; FModuleHandle : HModule; FModuleMenu : TMainMenu; FHModule: HModule; FAuthor: String; FVersion: String; FDefaultAction : TAction; FSmallImages : TImageList; FLargeImages : TImageList; FSmallImagesDisabled : TImageList; FLargeImagesDisabled : TImageList; FSmallImagesHot : TImageList; FLargeImagesHot : TImageList; public constructor Create(AOwner : TComponent); override; destructor Destroy; override; property ModuleHandle: HModule read FHModule write FHModule; protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; published property DefaultAction: TAction read FDefaultAction write FDefaultAction; property Description: string read FDescription write FDescription; property ModuleMenu: TMainMenu read FModuleMenu write FModuleMenu; property ModuleName: string read FModuleName write FModuleName; property SmallImages: TImageList read FSmallImages write FSmallImages; property LargeImages: TImageList read FLargeImages write FLargeImages; property SmallImagesDisabled: TImageList read FSmallImagesDisabled write FSmallImagesDisabled; property LargeImagesDisabled: TImageList read FLargeImagesDisabled write FLargeImagesDisabled; property SmallImagesHot: TImageList read FSmallImagesHot write FSmallImagesHot; property LargeImagesHot: TImageList read FLargeImagesHot write FLargeImagesHot; property Author: string read FAuthor write FAuthor; property Version: string read FVersion write FVersion; end; TModuleControllerClass = class of TModuleController; implementation {$R *.dfm} uses Dialogs; { TModuleController } constructor TModuleController.Create(AOwner: TComponent); begin inherited; FModuleHandle := 0; end; destructor TModuleController.Destroy; begin inherited; end; procedure TModuleController.Notification(AComponent: TComponent; Operation: TOperation); begin inherited Notification(AComponent, Operation); if Operation = opRemove then begin if ModuleMenu = AComponent then ModuleMenu := NIL; if DefaultAction = AComponent then DefaultAction := NIL; if SmallImages = AComponent then SmallImages := nil; if SmallImagesDisabled = AComponent then SmallImagesDisabled := nil; if SmallImagesHot = AComponent then SmallImagesHot := nil; if LargeImages = AComponent then LargeImages := nil; if LargeImagesDisabled = AComponent then LargeImagesDisabled := nil; if LargeImagesHot = AComponent then LargeImagesHot := nil; end; end; end.