2011-08-15 11 views
1

可能性の重複:
Replacing a component class in delphi変更VCLコンポーネント

誰もがVCLコンポーネントを変更すると、彼らは比較的IDE内でデフォルトされているので、それらを作るための任意のヒントを持っていますか?これは必ずしも降順ではなく、子孫オブジェクトでそのようなことを許可していないような場所で機能を変更することを意味します。標準コンポーネントの代わりに使用することができれば、それはボーナスです。

たとえば、私がしたいことの1つは、TButtonでアルファブレンドされたマウスオーバーです。私はOwnerDrawイベントがなく、ボタンの描画方法を変更するコードはオーバーライドできる場所にないようです。任意の提案、または私はVCLコードからTButtonとそのすべての祖先を取り除き、それを直接変更する必要がありますか?

+0

私は実際には重複しているのではなく、この質問はあまりにも散漫であいまいであると考えています。 –

+0

実際には重複しているわけではなく、リンクは実際に質問に答えていません。そうです:「あなたはこのメッセージを無効にすることはできません」、またはプライベートメソッド(「メソッドは基本クラスには存在しません」メッセージ)を変更する必要があるときはどうしますか?うまくいけば、それはあまり「散らばって、あいまいではありません」。 – Glenn1234

答えて

3

あなたは、次の方法のいずれかを選択できます。フォームの

  • オーバーライドReadStateherehere
  • 新しいWindowProcの割り当てが説明したようにhere
  • は、インターポーザクラスを使用して説明したように、説明したようにhere
+1

TButtonからではなく、TCustomButtonから派生します。これにより、公開されているプロパティをより詳細に制御できます。 –

1

カスタムV.C.Lの開発に関するいくつかの質問があります。コントロール。

非常に拡張されたトピックなので、インターネットをブラウズしたり検索したりすることができます。

簡単な質問として、コントロールを開発または拡張するにはいくつかの方法があります。

場合によっては、同じコントロールを異なる方法で開発することもできます。 その他、コントロールの種類に応じて、開発することができます。

また、コントロールを作成する方法、Delphi I.D.Eと対話する方法についても説明します。

Delphiのコントロールはパッケージで動作します。コントロールを持たないプレーンライブラリを使用してパッケージを作成することができます。

コントロールを作成することができます。コントロールは全くやりとりすることはできず、アプリケーションを実行するだけで動作し、後でDelphi I.D.Eとのやりとりを追加します。

デルファイでは、コントロールを開発してフォームに配置したいときに、内部的にDelphiのようなアプリケーションを設計していましたが、すでにコントロールしています。

1

アプリケーション内のすべてのTButtonの外観を変更したい場合は、VCLをまったく変更することなく変更できます。数百のボタンコンポーネントがある場合は、VCLコントロールを変更したりサブクラス化する必要はありません。たとえば、アルファブレンドマウスオーバーの場合、TMSコントロールをチェックアウトするだけです。

しかし、それはあなた自身のテクニックです。メソッド1(単純なものとして推奨)は、すべてのTButtonをアプリケーションから取り出し、別のものに置き換えるだけです。VCLコンポーネントの置換(グローバル)は、gExpertsを使用して簡単に行うことができます。標準コントロールの外観(ボタンがどのように見えるか)をDelphiコードで描画されたいくつかのオーバーレイされた要素と組み合わせる方法については、TBitBtnをサンプルとして参照してください。 TButtonやTCustomButtonをサブクラス化するのではなく、TBitBtnソースを調べて、それから開始することをお勧めします。

方法2(単純ではお勧めしません)は、標準コントロールよりもまったく異なる外観を描くことができるスキニングシステムの使用を開始することです。

関連する問題