独自のデザイナガイドラインを作成する - Delphi 2006

デザイナガイドラインはカスタマイズ可能らしいので、デザイナガイドラインのカスタマイズを試してみましょう。 下の図のフォーム上にあるウィンドウコントロールがあります。このコントロールでは、内側の線を基準として、他のコントロールを配置することに、仕様でなっています。内側の線に合わせるのは大変ですので、このコントロールをデザイナガイドラインに対応させ省力化を図ります。

  まず、このとあるコントロールのソースコードを下に示します。下の図をクリックすると表示します。

このコンポーネントの作り方を説明します。まず、パッケージを作成し、新しいコンポーネントを作成します。このとき、コンポーネントはTCustomControlから派生させます。 次に、Paintメソッドをオーバーライドし、白で塗りつぶし内側にラインを引くコードを実装します。以上でコンポーネントの作成は完了です。 また、この段階では必要ありませんが、準備として、designide.dcp をRequiresに追加します。加えて、DesignIntf,DesigneditorsをUsesに追加します。 次に、ガイドラインのクラスを実装します。ここではTGuideLineTestとしています。6つ程度のオーバーライド関数を用意し、実装していきます。親クラスはここでは、TComponentGuideLineを使います。 実装が終えたら、Registerプロシージャの中に、RegisterComponentGuidelinesルーチンを書きたします。ターゲットのコンポーネントと、そこで使うガイドラインのクラスを登録することで、コンポーネントに対応したガイドラインを登録することができます。

ここまで、実装できましたら、コンポーネントを登録して、設計画面に貼り付けてみましょう。まだ、内側の線と対応するガイドラインは表示されませんが、コンポーネントの端での位置あわせとマージン間隔表示のガイドラインは表示されることが確認できます。

 続いて、内側で位置を合わせるためのガイドラインを追加していきます。今回、簡単にするため、内側の上端のみを実装してみます。コードは下の図をクリックすると表示されます。

以上で、ガイドラインの追加は完了です。コンポーネントを再度インストールして、設計画面でコンポーネントを貼り付けてみましょう。下の図のとおり、内側のラインでガイドラインが表示されるようになりました。ここでは、スナップのコードは一切書きませんでしたが、スナップはIDE側で自動的に対応してくれるようです。

 おもしろいですね。実は、VCLEditorsユニットのTWinControlGuidelinesから派生させたほうがエレガントに書けたりするのですが、今回は仕組みも見てみたい都合上、TComponentGuideLinesから派生させています。更に低レベルなクラスから派生させる場合は、インターフェイスを使って、class(TBaseComponentGuidelines, IComponentGuidelines) あたりから派生させることもできるようです。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2006-01-01
iPentec all rights reserverd.