私は XE2 のいくつかのコンポーネントに取り組んでいます。コンポーネントがドロップされたフォームの uses 句に、コンポーネントのユニット以上のものを追加することは可能ですか?
例: ビルドしてインストールしたパッケージから TCustomComponent を選択すると、ユニット CustomComponent がフォームの uses 句に追加されます。ユニット GlobalConstants も追加したいと思います。
これができるかどうか誰にもわかりますか?
私は XE2 のいくつかのコンポーネントに取り組んでいます。コンポーネントがドロップされたフォームの uses 句に、コンポーネントのユニット以上のものを追加することは可能ですか?
例: ビルドしてインストールしたパッケージから TCustomComponent を選択すると、ユニット CustomComponent がフォームの uses 句に追加されます。ユニット GlobalConstants も追加したいと思います。
これができるかどうか誰にもわかりますか?
コンポーネントの設計時パッケージを作成します (まだ作成していない場合)。そのパッケージで、ISelectionEditorインターフェイスを実装するクラスを作成し (最も簡単な方法は、クラスから派生させることですTSelectionEditor)、その仮想メソッドをオーバーライドして、コンポーネントを使用する Form/Frame/DataModuleRequiresUnits()の句に表示する追加のユニットを報告します。 uses. 次に、 ( に加えて)Register()を呼び出して、パッケージの関数にそのクラスを登録させます。RegisterSelectionEditor()RegisterComponents()
Indy 10TIdTCPServerは、 、TIdCmdTCPClient、およびTIdUDPServerコンポーネントに対して正確にこれを行い、IdContextおよびユニットが句IdSocketHandleに追加されるようにします。およびユニットを見て、Indy がこれをどのように実装しているかを確認してくださいuses。IdCoreSelectionEditors.pasIdRegisterCore.pas
更新:IdCoreSelectionEditors.pasおよびユニットは、2014 年 3 月に Indy 10 から削除されました。コンポーネントごとの SelectionEditor クラスはすべて、ユニット自体IdProtocolsSelectionEditors.pasに実装された新しい単一のクラスに置き換えられました。IdRegisterCoreこの新しい SelectionEditor クラスは、すべての Indy コンポーネントに登録され、すべてのパラメーターのデータ型の RTTI を使用して、設計時に配置された任意の Indy コンポーネントのすべてのインスタンスを探し、割り当てられたイベント ハンドラーがどれを知るかを知るために値を返します。uses節に含めるために報告する単位。