子コントロールのドッキング サイトへのドッキング方式を制御する

提供: RAD Studio
移動先: 案内検索

コントロールの利用:インデックス への移動

ドッキング サイトは、子コントロールがドッキング サイト上でリリースされると自動的に受け入れます。ほとんどのコントロールでは、最初の子がクライアント領域のサイズに合わせてドッキングされ、2 番めの子がクライアント領域を分離した領域に分割します。この分割が順番に続いていきます。ページ コントロールでは、子を新しいタブ シートにドッキングします(子が別のページ コントロールである場合は、タブ シートでマージ)。

ドッキング サイトで子コントロールのドッキング方式を制限するには、次の 3 つのイベントを使用します。



 property OnGetSiteInfo: TGetSiteInfoEvent; TGetSiteInfoEvent = procedure(Sender: TObject; DockClient: TControl; var   InfluenceRect: TRect; var CanDock: Boolean) of object;



 __property TGetSiteInfoEvent OnGetSiteInfo = {read=FOnGetSiteInfo, write=FOnGetSiteInfo}; typedef void __fastcall (__closure *TGetSiteInfoEvent)(System::TObject* Sender, TControl* DockClient, Windows::TRect &InfluenceRect, const Windows::TPoint &MousePos, bool &CanDock);



OnGetSiteInfo イベントは、ユーザーがドッキング可能な子をコントロール上にドラッグすると、ドッキング サイト側で発生します。このイベントにより、サイトが子として DockClient パラメータで指定されたコントロール(その場合、子がドッキング用であるとみなされなければならない)を受け入れるかどうかを示すことができます。OnGetSiteInfo が発生すると、InfluenceRect がドッキング サイトの画面座標に、CanDockTrue に初期化されます。InfluenceRect を変更するとドッキング領域を制限できます。CanDockFalse に設定すると、子のドッキングを拒否できます。



 property OnDockOver: TDockOverEvent; TDockOverEvent = procedure(Sender: TObject; Source: TDragDockObject; X, Y:  Integer; State: TDragState; var Accept: Boolean) of object;



 __property TDockOverEvent OnDockOver = {read=FOnDockOver, write=FOnDockOver}; typedef void __fastcall (__closure *TDockOverEvent)(System::TObject* Sender, TDragDockObject* Source, int X, int Y, TDragState State, bool &Accept);



OnDockOver イベントは、ユーザーがドッキング可能な子をコントロール上にドラッグすると、ドッキング サイト側で発生します。これはドラッグ&ドロップ操作の OnDragOver イベントと同様です。このイベントの Accept パラメータを設定して、ドッキングのために子をリリースできることを通知します。ドッキング可能コントロールが OnGetSiteInfo イベント ハンドラで(たとえば、コントロールの種類が違うため)拒否された場合、OnDockOver は起こりません。



 property OnDockDrop: TDockDropEvent; TDockDropEvent = procedure(Sender: TObject; Source: TDragDockObject; X, Y:  Integer) of object;



 __property TDockDropEvent OnDockDrop = {read=FOnDockDrop, write=FOnDockDrop}; typedef void __fastcall (__closure *TDockDropEvent)(System::TObject* Sender, TDragDockObject* Source, int X, int Y);



OnDockDrop イベントは、ユーザーがドッキング可能な子をコントロール上でリリースすると、ドッキング サイト側で発生します。これはドラッグ&ドロップ操作の OnDragDrop イベントと同様です。このイベントを使用して、コントロールを子コントロールとして受け入れるために必要な処理をします。子コントロールへのアクセスは、Source パラメータで指定された TDockObjectControl プロパティを使って取得できます。

関連項目