0

以前のバージョンの Delphi では、カスタム フォームに公開されたプロパティが表示されました。

ただし、Delphi 10.2 Tokyo で問題が発生しています。具体的には、この投稿にある適切なメソッドを呼び出す良い方法がわかりません。

要約すると、 への呼び出しRegisterCustomModule()が必要ですが、ここDesignIntfで説明するユニットには がありません(と はあります)。基本カスタム モジュールは から継承されますが、継承されません (フレームワークとして FMX を使用)。TCustomModuleTBaseCustomModuleTCustomModuleClassTInterfacedObjectTForm

Delphi の最新バージョンで公開されたプロパティを表示するために FMX フォームを登録する正しい方法は何ですか?

4

1 に答える 1

3
uses DesignEditors;

type
   TMySpecialForm = class(TCustomForm)
   end;


RegisterCustomModule(TMySpecialForm, TCustomModule);

RegisterCustomModuleComponentBaseClassと の2 つのパラメータを取りますCustomModuleClass。1 つ目はカスタム フォーム クラスで、もちろん から派生しTCustomFormます。2 つ目は、デザイナーが使用するクラスです。TBaseCustomModuleこのクラスは 2 つのことを行う必要があります: (ユニット内で)から派生しDesignIntf、インターフェイスを実装しICustomModuleます。DesignEditorsユニット内の 502 行付近のコメントを見てください。

このTCustomModuleクラスは、設計時にカスタム フォームに追加するデフォルト以外の動作がない場合に使用できるように提供されています。

デザイナーでフォームに何らかのカスタム動作が必要な場合、たとえば、さまざまなプロパティ設定コマンドを含むポップアップ メニューが必要な場合は、独自のTCustomModuleクラスを作成します。

uses DesignEditors;

type
    TMySpecialFormDesigner = class(TCustomModule, ICustomModule)
        function GetVerb(Index: Integer): string; override;
        function GetVerbCount: Integer; override;
    end;

RegisterCustomModule(TMySpecialForm, TMySpecialFormDesigner);
于 2017-06-28T12:50:46.557 に答える