Untergeordnete Steuerelemente an das Ziel einer Andock-Operation andocken

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Mit Steuerelementen arbeiten - Index

Das Ziel einer Andock-Operation akzeptiert andere Steuerelemente automatisch, wenn diese auf ihr abgelegt werden. Bei den meisten Steuerelementen wird das erste Objekt so angedockt, dass es den Client-Bereich ausfüllt, das zweite teilt diesen Bereich in Abschnitte auf usw. Registerkartenkomponenten docken Nachkommen in neue Registerkarten (oder führen diese in der Registerkarte zusammen, wenn der Nachkomme eine weitere Registerkartenkomponente ist).

Ziele von Andock-Operationen können mithilfe von drei Ereignissen festlegen, wie untergeordnete Steuerelemente angedockt werden.

 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);

Zieht der Benutzer ein andockbares Objekt über ein Steuerelement, wird für das Ziel der Andock-Operation ein OnGetSiteInfo-Ereignis ausgelöst. Durch dieses Ereignis kann das Ziel angeben, ob es das im Parameter DockClient übergebene Steuerelement akzeptiert und wo sich dieses Steuerelement befinden muss, damit es für eine Andock-Operation in Frage kommt. Wenn das Ereignis OnGetSiteInfo eintritt, wird InfluenceRect mit den Bildschirmkoordinaten des Ziels und CanDock mit True initialisiert. Um den Andockbereich einzuschränken, weisen Sie InfluenceRect neue Werte zu. Um das Steuerelement abzulehnen, setzen Sie CanDock auf False.

 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);

Zieht der Benutzer ein andockbares Objekt über ein Steuerelement, wird für das Ziel der Andock-Operation ein OnDockOver-Ereignis ausgelöst. Dieses Ereignis entspricht dem Ereignis OnDragOver bei Drag&Drop-Operationen. Über den Parameter Accept geben Sie an, ob das untergeordnete Objekt angedockt werden kann. Wenn das andockbare Steuerelement von der Ereignisbehandlungsroutine für OnGetSiteInfo nicht akzeptiert wird (weil es beispielsweise nicht den richtigen Typ hat), wird OnDockOver nicht ausgelöst.

 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);

Wenn der Benutzer ein andockbares Objekt auf einem Ziel ablegt, wird für das Ziel ein OnDockDrop-Ereignis ausgelöst. Dieses Ereignis entspricht dem Ereignis OnDragDrop einer normalen Drag&Drop-Operation. Sie können hier Aktionen durchführen, die nach dem Ablegen des Steuerelements erforderlich sind. Der Zugriff auf das Steuerelement erfolgt über die Eigenschaft Control des TDockObject-Objekts, auf das der Parameter Source zeigt.

Siehe auch