//--------------------------------------------------------------------------- #include #pragma hdrstop #include "PenAndNaviTabDockHost_F.h" #include "PenAndNaviDock_F.h" #include "FullView.h" #include "PenManager.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "RzTabs" #pragma resource "*.dfm" TPenAndNaviTabDockHostForm *PenAndNaviTabDockHostForm; //--------------------------------------------------------------------------- __fastcall TPenAndNaviTabDockHostForm::TPenAndNaviTabDockHostForm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TPenAndNaviTabDockHostForm::FormClose(TObject *Sender, TCloseAction &Action) { if (RzPageControl->DockClientCount == 1) { TControl* DockClient = RzPageControl->DockClients[0]; /* TPoint TopLeft = DockClient->ClientToScreen(Point(0, 0)); TPoint BottomRight = DockClient->ClientToScreen(Point(UndockWidth, UndockHeight)); DockClient->ManualFloat(TRect(TopLeft, BottomRight)); */ TPoint TopLeft = DockClient->ClientToScreen(Point(0, 0)); TPoint BottomRight = DockClient->ClientToScreen(Point(UndockWidth, UndockHeight)); if (DockClient->Name == L"FullViewForm") { BottomRight = DockClient->ClientToScreen(Point(266, 192)); } else { BottomRight = DockClient->ClientToScreen(Point(266, 81)); } DockClient->ManualFloat(TRect(TopLeft, BottomRight)); Action = caFree; } else Action = caHide; } //--------------------------------------------------------------------------- void __fastcall TPenAndNaviTabDockHostForm::RzPageControlDockOver(TObject *Sender, TDragDockObject *Source, int X, int Y, TDragState State, bool &Accept) { Accept = dynamic_cast(Source->Control) != NULL; } //--------------------------------------------------------------------------- void __fastcall TPenAndNaviTabDockHostForm::RzPageControlGetSiteInfo(TObject *Sender, TControl *DockClient, TRect &InfluenceRect, TPoint &MousePos, bool &CanDock) { CanDock = dynamic_cast(DockClient) != NULL; } //--------------------------------------------------------------------------- void __fastcall TPenAndNaviTabDockHostForm::RzPageControlUnDock(TObject *Sender, TControl *Client, TWinControl *NewTarget, bool &Allow) { // Only 2 dock clients means the host must be destroyed and // the remaining window undocked to its old position and size. if ((RzPageControl->DockClientCount == 2) && (NewTarget != this)) { if (NewTarget != RzPageControl) PostMessage(this->Handle, WM_CLOSE, 0, 0); else Allow = False; } } //--------------------------------------------------------------------------- void __fastcall TPenAndNaviTabDockHostForm::RzPageControlChange(TObject *Sender) { TRzPageControl *PageControl = (TRzPageControl *)Sender; if (PageControl == NULL) return; if (PageControl->TabIndex < 0) return; if (RzPageControl->DockClientCount == 1) return; TControl* DockClient = RzPageControl->DockClients[PageControl->TabIndex]; //TRzTabSheet *TabSheet = PageControl->PageForTab(PageControl->TabIndex); if (DockClient->Name == L"FullViewForm") { //TabSheet->Height = FullViewForm->ClientHeight; //this->Width = 266; this->Height = 215; } else { //TabSheet->Height = PenManagerForm->ClientHeight; //this->Width = 266; this->Height = 125; } //this->Height = PageControl->ClientHeight; } //---------------------------------------------------------------------------