Delphi でのドッキング テクノロジーの実装:
ソフトウェア技術の継続的な進歩に伴い、ソフトウェアのインターフェイスはますます美しくなり、操作はますます便利になっています。
市販されているさまざまな専門的なソフトウェアを見てみると、ほとんどのソフトウェアがフォームのドッキング機能を提供しており、特にツール ソフトウェアは基本的に多かれ少なかれドッキング機能を備えています。
当然のことながら、Delphi はドッキングもサポートしており、VCL と緊密に統合されているため、大部分の Delphi プログラマにとって大きな恩恵となっています。退屈なコーディング時間を節約しましょう。コアプログラムの構想に焦点を当てます。
まず、VCL の構造を確認します。TWinControl クラスには DockSite プロパティ (ブール値) があり、このコントロールに他のコントロールをドッキングできるようにします。このコントロールが必要な場合は、DragKind プロパティがあります。他のコントロールにドッキングできるようにするには、DragKind プロパティを dkDock に設定します。とても簡単で、プロパティを設定するだけでドッキングに対応したプログラムが完成します。
もちろん、上記は最も基本的な手順にすぎません。上記の 2 つの手順を使用して、さらに複雑な関数を実装するためのコードを書き続けることができます。
一般に、ドッキングをサポートするプログラムは、メイン ウィンドウの上下左右にドッキングできます。つまり、ドッキングできるコントロールをメイン ウィンドウの横に配置することをお勧めします。これらは TWinControl から継承されます)、一般的には TPanel を選択します。読者の理解を容易にするために、メイン ウィンドウの左側はドッキングできると想定できるため、メイン ウィンドウに Align 属性を配置します。 lLeft のパネルの名前は LeftDockPanel、幅は 0、DockSite 属性は True です。もちろん、LeftDockPanel はサイズを変更できるはずなので、その右側に LeftSplitter という名前の TSplitter を配置し、Align 属性は次のようになります。左。次に、ドッキング コントロールです。通常、プログラムのドッキング コントロールはフォームであるため、フォームを作成し、DockableForm という名前を付けます。DragKind プロパティは dkDock に設定され、DragMode プロパティは dmAutomatic (自動ドッキング) に設定されます。
これでこのプログラムを実行できるようになりました。効果がありませんか?ドッキングするとドッキングしたフォームが消えてしまいます!
ああ、忘れるところでしたが、ドッキングされたフォームがドッキングされると、Delphi はいくつかのイベントを生成します。
1. OnDockOver(送信者: TObject; ソース: TDragDockObject;
X、Y: 整数; 状態: TDragState; var 受け入れ: ブール値);
2. OnDockDrop(送信者: TObject; ソース: TDragDockObject;
X、Y: 整数);
3. OnGetSiteInfo(送信者: TObject; DockClient: TControl;
var InfluenceRect: TRect; var CanDock: ブール値;
4. OnStartDock(送信者: TObject;
var DragObject: TDragDockObject);
5. OnEndDock(送信者、ターゲット: TObject; X、Y: 整数);
6. OnUnDock(送信者: TObject; クライアント: TControl;
NewTarget: TWinControl varAllow: ブール値);
うわー、たくさんありますが、心配しないでください。詳しく説明しましょう。
まずは最初のイベントを見てみましょう
OnDockOver は、ドッキングされたコントロール (DockableForm) がドッキングされたコントロール (LeftDockPanel) を渡すときにトリガーされます。ソースには、ドッキングおよびドラッグ操作に関する情報が含まれています。もう 1 つの重要な属性は DockRect です。これはドッキング位置であり、State の状態は dsDragEnter、dsDragLeave、です。 dsDragMove はそれぞれ、ドラッグイン、ドラッグアウェイ、ドラッグによる移動を意味し、Accept はドッキングに同意するかどうかを意味します。 OnDockOver イベントの主な機能は、ドッキングされたフォームのプレビュー位置を制御することです。次のコードを追加しましょう。