2

SynEdit コンポーネントには、現在存在するすべてのハイライターが一覧表示されるドロップダウン リストを含む「ハイライター」プロパティがあります (設計時)。私には、これは設計時のコンポーネントにとって非常に重要な概念のように思えますが、それがどのように機能するかを知ることができません:

TSynEdit と TSynPasSyn をフォームにドロップダウンするとします。次に、Highlighter プロパティを持つ TSynedit をクリックします。以前に作成した TSynPasSyn を選択できるようになりました。別の TSynPasSyn を作成すると、それもこのリストに追加されます。私の質問:

独自のコンポーネントでそのようなことを行う最良の方法はどれですか? 単純にプロパティ エディタを使用できますか、それともカスタム ヘルパー クラスが必要ですか、それともまったく別のものが必要ですか?

4

1 に答える 1

11

驚かれるかもしれませんが、独自のコンポーネントのコンポーネント プロパティのプロパティ エディタに既存のコンポーネントを一覧表示するために必要なことは何もありません。プロパティを目的の型として宣言するだけで、あとは VCL フレームワークが処理します。

たとえば、次の非常に単純なコンポーネントについて考えてみましょう。

type
  TButtonSelector = class(TComponent)
  private
    FButton: TButton;
  published
    property Button: TButton read FButton write FButton;
  end;

このコンポーネントを IDE にインストールした後、オブジェクト インスペクタで Button プロパティを選択すると、現在のフォームにあるすべての既存のボタンが一覧表示されます。

これはすべて に組み込まれてDesignEditors.TComponentPropertyいます。つまり、唯一の要件は、選択したいオブジェクトを から降下させることですTComponent

于 2013-11-23T12:08:23.973 に答える