Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: Eigenen Fenstertyp erstellen/registrieren?

  Alt 9. Mai 2014, 16:58
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;
Miniaturansicht angehängter Grafiken
unbenannt.jpg  
$2B or not $2B

Geändert von himitsu ( 9. Mai 2014 um 17:03 Uhr)
  Mit Zitat antworten Zitat