Der Witz dabei ist, daß ich mir grade daraus ein Henne-Ei-Problem bastle.
(mit Hilfe dieses Dings entsteht ein Helper, um nochmal sowas zu erstellen,
was "nett" werden wird, daß die OTA die Interfaceinstanz selber erstellt und mir keine Möglichkeit gibt, da einen Parameter mitzugeben.
Aber zum Glück hilft mir die
RTTI beim Hacken der Klasse, wenn das so funktioniert, wie ich es erhoffe.)
Delphi-Quellcode:
uses
DesignIntf;
type
TMyCustomModule = class(TBaseCustomModule, ICustomModule)
constructor Create(Root: TComponent; const Designer: IDesigner); override;
class function DesignClass: TComponentClass; override;
function GetAttributes: TCustomModuleAttributes;
function GetVerbCount: Integer;
function GetVerb (Index: Integer): string;
procedure PrepareItem(Index: Integer; const Item: IMenuItem);
procedure ExecuteVerb(Index: Integer);
procedure Saving;
procedure ValidateComponent(Component: TComponent);
function ValidateComponentClass(ComponentClass: TComponentClass): Boolean;
function Nestable: Boolean;
end;
TMyDataModule = class(TDataModule)
private
FMyProp: Integer;
published
property MyProp: Integer read FMyProp write FMyProp;
end;
procedure register;
begin
RegisterCustomModuleProc(0, TMyDataModule, TMyCustomModule);
end;
constructor TMyDataModule.TMyCustomModule.Create(Root: TComponent; const Designer: IDesigner);
begin
inherited;
end;
class function TMyDataModule.TMyCustomModule.DesignClass: TComponentClass;
begin
Result := TMyDataModule;
end;
procedure TMyDataModule.TMyCustomModule.ExecuteVerb(Index: Integer);
begin
case Index of
0: ShowMessage('Execute: MyMenuItem');
end;
end;
function TMyDataModule.TMyCustomModule.GetAttributes: TCustomModuleAttributes;
begin
Result := [];
end;
function TMyDataModule.TMyCustomModule.GetVerb(Index: Integer): string;
begin
case Index of
0: Result := 'MyMenuItem';
else Result := '';
end;
end;
function TMyDataModule.TMyCustomModule.GetVerbCount: Integer;
begin
Result := 1;
end;
function TMyDataModule.TMyCustomModule.Nestable: Boolean;
begin
Result := False;
end;
procedure TMyDataModule.TMyCustomModule.PrepareItem(Index: Integer; const Item: IMenuItem);
begin
case Index of
0: Item.Checked := True;
end;
end;
procedure TMyDataModule.TMyCustomModule.Saving;
begin
end;
procedure TMyDataModule.TMyCustomModule.ValidateComponent(Component: TComponent);
begin
end;
function TMyDataModule.TMyCustomModule.ValidateComponentClass(ComponentClass: TComponentClass): Boolean;
begin
Result := True;
end;