Delphi7 でのドッキング機能の実装Delphi7 を使用してアプリケーション システムを開発する場合、メイン ウィンドウにサブウィンドウをドッキングする機能を使用することがよくあります。この部分に慣れていない場合は、CSDN などの Web サイトを参照してください。関連するさまざまなコントロールを見つけるか、Delphi に付属しているドッキング ルーチンを参照して、使用できる簡単な方法を紹介します。 1. メイン ウィンドウに 4 つのパネルと 4 つのスプリッターを追加し、上下左右の配置を設定します。
2. 4 つのパネルの DockSite 属性を True に設定します。
3. 次のように、OnDockDrop、OnDockOver、および OnUnDockイベントを左右のパネルに追加します。
手順TfrmMain.pnlLeftUnDock(送信者: TObject; クライアント: TControl;
NewTarget: TWinControl varAllow: ブール値);
始める
if (TPanel として送信者).VisibleDockClientCount = 1 then
始める
(TPanel として送信者).Width := 1;
終わり;
終了;プロシージャTfrmMain.pnlLeftDockDrop(送信者: TObject;
ソース: TDragDockObject; X、Y: 整数);
始める
(TPanel としての送信者).Width := max(source.Control.UndockWidth,(TPanel としての送信者).Width);
終了;プロシージャTfrmMain.pnlLeftDockOver(送信者: TObject;
ソース: TDragDockObject; X、Y: 整数; 状態: TDragState;
varAccept: ブール値);
始める
State = dsDragEnterの場合、then
始める
(TPanel としての送信者).Width := max(Source.Control.UndockWidth, (TPanel としての送信者).Width);
終わり
それ以外
始める
State = dsDragLeaveの場合
始める
(TPanel として送信者).Width := 1;
終わり;
終わり;
終わり;
左右のパネルは同じコードでイベント コードに応答します。 4. 次のように、OnDockDrop、OnDockOver、および OnUnDock イベントを上部パネルと下部パネルに追加します。
プロシージャTfrmMain.pnlBottomUnDock(送信者: TObject; クライアント: TControl;
NewTarget: TWinControl varAllow: ブール値);
始める
if (TPanel として送信者).DockClientCount = 1 then
始める
(TPanel として送信者).Height := 1;
終わり;
終わり;プロシージャTfrmMain.pnlBottomDockDrop(送信者: TObject;
ソース: TDragDockObject; X、Y: 整数);
始める
(TPanel としての送信者).Height := max(source.Control.UndockHeight,(TPanel としての送信者).Height);
終了;プロシージャTfrmMain.pnlBottomDockOver(送信者: TObject;
ソース: TDragDockObject; X、Y: 整数; 状態: TDragState;
varAccept: ブール値);
始める
State = dsDragEnterの場合、then
始める
(TPanel としての送信者).Height := max(Source.Control.UndockHeight, (TPanel としての送信者).Height);
終わり
それ以外
始める
State = dsDragLeaveの場合
始める
(TPanel として送信者).Height := 1;
終わり;
終わり;
終わり;
上部パネルと下部パネルは同じコードでイベント コードに応答します。 5. メイン フォームにドッキングするための新しいフォームを作成します。
6. 新しいフォーム DragKind を dkDock に設定し、DragMode を dmAutomatic に設定します。
7. 新しいフォームの OnClose イベントに次のコードを追加します。
self.HostDockSite <> nilの場合
始める
self.ManualDock(nil);
終わり;
アクション := caHide;
8. 新しいフォームを自動作成しないように設定します。
9. クリエイティブ本体に新しいフォームを作成し、表示します。覚えておいてください: ShowModal ではなく、Show を使用してください。この方法はあまり標準化されていません。より詳細な制御が必要な場合は、Delphi のドッキング例を参照することをお勧めします。この例のパネルを TabControl または PageConrol に変更すると、より良い結果が得られますが、コードを少し変更する必要があります。興味のある方は試してみてください。