2

Delphiの「通常の」ドッキングを使用しています(DockSite=TrueおよびUseDockManager=True)。現在、いくつかのDockSiteコントロールと、いくつかのドッキング可能なフォームがあります。ただし、各ドッキング可能なフォームが各ドックサイトに配置されるわけではありません。

フォームは、ドッキングすることになっているコントロールの種類を知っています。コントロール、OTOHは、どのフォームを受け入れるかどうかを知りません。

私の問題は、ドラッグ/ドロップ(またはドラッグ/ドック)操作をキャンセルできるいくつかのイベントが発生することです。DragOver、StartDockなどです。しかし、これらはすべて「受信」側で発生し、の側では発生しません。ドロップされているコントロール。それが私が欲しいところです—ドッキングされているフォームが特定のコントロールへのドッキングを拒否できるようにするためです。

そのようなイベントはありますか、私は何かを見落としていますか、それとも別の方法でこれに取り組む必要がありますか?

4

2 に答える 2

1

コメントだけでなく、答えとしてこれを追加すべきだと思いました。カスタムフォームのベースフォームを作成し、その中にロジックを配置します。次に、各コントロールは、1つのフォームクラスと対話する方法を知っている必要があります。作成する新しいドッキングフォームはそれぞれ、この基本フォームから派生する必要があります。これの利点は、すべてが標準のイベントハンドラーを介して処理できるため、コントロールのカスタムバージョンを作成する必要がないことです。

于 2011-09-07T15:53:09.917 に答える
0

イベントは、OnStartDockドッキングされているDockSiteコントロールではなく、ドッキングされているコントロール/フォームに対して発生します。したがって、ドッキング可能なフォームにイベントハンドラーを割り当てるか、仮想メソッドをOnStartDockオーバーライドすることができます。DoStartDock()

于 2011-09-18T00:54:54.693 に答える