サードパーティ製プラグインでの IDE スタイルの利用
IDE はルック&フィールのために VCL スタイルを使用します。 サードパーティ プラグインは、IDE スタイルに一致するドッキング可能なウィンドウやダイアログなどの、ウィンドウを提供します。 テーマに従うだけでなく、TGroupBox などの一部の特定のコントロールは、通常とは異なる外観でレンダリングされるにするためのスタイル フックを持っており、ウィンドウはこれにも従う必要があります。
一般情報
IDE は IOTAIDEThemingServices
API を提供しており、テーマが有効かどうかをチェックすることができます。
IDE およびエディタのテーマ名を取得し、その IDE のテーマをフォームやコントロールに適用し、特定の IDE の動作のスタイル フックに対して、フォームを登録します。
このインターフェイスは、IDE StyleServices にアクセスすることができます。 IDE は、IDE スタイルを表すスタイル サービス オブジェクトを保持します。
このインターフェイスには、BorlandIDEServices
を使用してアクセスします:
var
ThemingServices : IOTAIDEThemingServices;
if Supports (BorlandIDEServices, IOTAIDEThemingServices, ThemingServices) then...
フォームを IDE ルック&フィールに登録する
プラグインの初期化またはフォームのコンストラクタで、IOTAIDEThemingServices.RegisterFormClass
をフォームのクラス(つまりフォーム型)と共に呼び出します。 スタイル フックをフォームに適用するには、これを一度だけ行う必要があります。これを登録解除する必要はありません。 これを行うと、TGroupBox はフレームなしで描画されますが、オプション ダイアログでグループ ボックスが行うのと同じように、キャプション フォントが大きくなり、上部に 1 本の線が表示されます。
フォームの各インスタンスについては、IOTAIDEThemingServices.ApplyTheme
を呼び出します。これにより、IDE スタイルがフォームに適用されます。また、IDE スタイルが変更されたときにこれを実行して、フォームとコントロールを一致するように更新します。IDE スタイルがいつ変更されたかを検出する方法については、以下を参照してください。
スタイル変更の検出
IDE テーマまたはエディタ テーマがいつ変更されたかを検出する通知機能を登録します。
- 一般の IDE テーマの場合は、
IOTAIDEThemingServices.AddNotifier
を使用します。
- エディタのカラー スキーマを変更するには、
IOTAIDEThemingServices.AddEditorColorNotifier
を使用します。
両者の通知機能インターフェイスには 2 つのメソッドがあり、Changing バリアント(例:IOTAEditorColorSpeedSetting.EditorColorChanging
)はテーマが変更される前に呼び出され、Changed バリアント(例:INTAIDEThemingServicesNotifier.ChangedTheme
)はテーマが変更された後に呼び出されます。
通常、エディタの色設定について通知する必要がない限り、一般的な IDE テーマの変更の通知のみを登録します。
INTAIDEThemingServicesNotifier.ChangedTheme
メソッドの実装の中で、フォームに対して IOTAIDEThemingServices.ApplyTheme
を呼び出します。これにより、フォームとコントロールが新しいスタイルへと更新されます。また、フォームで使用されるカスタム色やカスタム描画を、新しい色を使用するよう更新します。
スタイル ガイド
IDE は多くのダイアログで共通のルック アンド フィールを備えています。そこでは、フォームの下部に OK、キャンセルや他のボタンのある色付きのパネルと、残りのフォームはウィンドウの色であります。
これを実装する最良の方法は、2 つのパネルを使用する方法です。1 つはボタンを格納するために下部に配置され、ほかはダイアログのコンテンツを格納するためにクライアントに合わせて配置されます。各パネルに、次を適用します:
- ParentBackground を false に設定
seClient
を StyleElements から削除- コンテンツ パネルには Color を
clWindow
に、ボタン パネルにはclBtnFace
を設定。必要に応じて、IOTAIDEThemingServices.StyleServices.GetSystemColor
で各システム色のためにテーマ値を取得することができます。
100% 縮尺の場合、典型的なボタンパネルは高さ 49 ピクセルです。ボタンは右から 20 ピクセル分インデントされ、サイズはデフォルトで 75x25、上が 12 になるよう配置されます。これにより、ボタンの下に 12 ピクセルのマージンができます。
TGroupBox では、最上位のコントロールの上部を少なくとも 26 ピクセルにします。これにより、より大きなキャプションを表示する余地が生まれます。
IDE は、インデントによってコントロールとデータ間の関係を示します。
別のコントロールに依存する設定またはコントロール(たとえば、設定の動作を変更する、または設定が特定の値に設定されている場合にのみ有効になる、など)は、その設定の下に 16 ピクセル分インデントされて配置されます。このインデントにより、コンテンツを RadioButton または CheckBox キャプションの先頭に揃えることができます。 TComboBox などの別のコントロールの下にある場合は、他のインデントと一貫性があります。
IDE レイアウトは、4x4 ピクセル グリッドを基本としています。 ほぼすべての UI 要素の高さは、4 ピクセルの倍数です。たとえば、ツリーやリストビューの行の高さは 20 ピクセルです。