// Borland C++ Builder
// Copyright (c) 1995, 2005 by Borland Software Corporation
// All rights reserved

// (DO NOT EDIT: machine generated header) 'Dockform.pas' rev: 10.00

#ifndef DockformHPP
#define DockformHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member functions
#pragma pack(push,8)
#include <System.hpp>	// Pascal unit
#include <Sysinit.hpp>	// Pascal unit
#include <Windows.hpp>	// Pascal unit
#include <Messages.hpp>	// Pascal unit
#include <Sysutils.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit
#include <Graphics.hpp>	// Pascal unit
#include <Controls.hpp>	// Pascal unit
#include <Forms.hpp>	// Pascal unit
#include <Dialogs.hpp>	// Pascal unit
#include <Deskform.hpp>	// Pascal unit
#include <Idemessages.hpp>	// Pascal unit
#include <Inifiles.hpp>	// Pascal unit
#include <Actnlist.hpp>	// Pascal unit
#include <Menus.hpp>	// Pascal unit

//-- user supplied -----------------------------------------------------------

namespace Dockform
{
//-- type declarations -------------------------------------------------------
#pragma option push -b-
enum TIDEDockType { dtJoin, dtTab };
#pragma option pop

class DELPHICLASS TDockableForm;
class PASCALIMPLEMENTATION TDockableForm : public Deskform::TDesktopForm 
{
	typedef Deskform::TDesktopForm inherited;
	
__published:
	Actnlist::TActionList* DockActionList;
	Actnlist::TAction* DockableCmd;
	Actnlist::TAction* StayOnTopCmd;
	Actnlist::TAction* ZoomWindowCmd;
	HIDESBASE void __fastcall FormCreate(System::TObject* Sender);
	void __fastcall FormGetSiteInfo(System::TObject* Sender, Controls::TControl* DockClient, Types::TRect &InfluenceRect, const Types::TPoint &MousePos, bool &CanDock);
	void __fastcall DockableCmdExecute(System::TObject* Sender);
	void __fastcall DockableCmdUpdate(System::TObject* Sender);
	void __fastcall StayOnTopCmdExecute(System::TObject* Sender);
	void __fastcall StayOnTopCmdUpdate(System::TObject* Sender);
	void __fastcall ZoomWindowCmdExecute(System::TObject* Sender);
	
private:
	TIDEDockType FIDEDockType;
	Controls::TAlign FDockEdge;
	bool FAboutToDestroy;
	bool FVisibleOnUndock;
	HIDESBASE MESSAGE void __fastcall CMDockClient(Controls::TCMDockClient &Message);
	HIDESBASE MESSAGE void __fastcall WMMouseActivate(Messages::TWMMouseActivate &Message);
	void __fastcall SetStayOnTop(const bool Value);
	
protected:
	bool FDockable;
	virtual bool __fastcall CreateDockParent(Controls::TCMDockClient &Message);
	virtual void __fastcall CreateParams(Controls::TCreateParams &Params);
	DYNAMIC void __fastcall DockOver(Controls::TDragDockObject* Source, int X, int Y, Controls::TDragState State, bool &Accept);
	DYNAMIC void __fastcall DoStartDock(Controls::TDragObject* &DragObject);
	virtual void __fastcall SetDockable(const bool Value);
	
public:
	__fastcall virtual TDockableForm(Classes::TComponent* AOwner);
	virtual void __fastcall ForceShow(void);
	void __fastcall GetTabDockRect(Types::TRect &ARect);
	bool __fastcall ToggleDockable(void);
	virtual void __fastcall SaveWindowState(Inifiles::TCustomIniFile* Desktop, bool isProject);
	virtual void __fastcall LoadWindowState(Inifiles::TCustomIniFile* Desktop);
	__property bool AboutToDestroy = {read=FAboutToDestroy, write=FAboutToDestroy, nodefault};
	__property bool Dockable = {read=FDockable, write=SetDockable, nodefault};
	__property bool VisibleOnUndock = {read=FVisibleOnUndock, write=FVisibleOnUndock, nodefault};
	__property TIDEDockType IDEDockType = {read=FIDEDockType, write=FIDEDockType, nodefault};
	__fastcall virtual ~TDockableForm(void);
public:
	#pragma option push -w-inl
	/* TCustomForm.CreateNew */ inline __fastcall virtual TDockableForm(Classes::TComponent* AOwner, int Dummy) : Deskform::TDesktopForm(AOwner, Dummy) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* TWinControl.CreateParented */ inline __fastcall TDockableForm(HWND ParentWindow) : Deskform::TDesktopForm(ParentWindow) { }
	#pragma option pop
	
};


class DELPHICLASS TBlendForm;
class PASCALIMPLEMENTATION TBlendForm : public Forms::TForm 
{
	typedef Forms::TForm inherited;
	
protected:
	HIDESBASE MESSAGE void __fastcall WMNCHitTest(Messages::TWMNCHitTest &Message);
public:
	#pragma option push -w-inl
	/* TCustomForm.Create */ inline __fastcall virtual TBlendForm(Classes::TComponent* AOwner) : Forms::TForm(AOwner) { }
	#pragma option pop
	#pragma option push -w-inl
	/* TCustomForm.CreateNew */ inline __fastcall virtual TBlendForm(Classes::TComponent* AOwner, int Dummy) : Forms::TForm(AOwner, Dummy) { }
	#pragma option pop
	#pragma option push -w-inl
	/* TCustomForm.Destroy */ inline __fastcall virtual ~TBlendForm(void) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* TWinControl.CreateParented */ inline __fastcall TBlendForm(HWND ParentWindow) : Forms::TForm(ParentWindow) { }
	#pragma option pop
	
};


class DELPHICLASS TIDEDragDockObject;
class PASCALIMPLEMENTATION TIDEDragDockObject : public Controls::TDragDockObjectEx 
{
	typedef Controls::TDragDockObjectEx inherited;
	
private:
	TBlendForm* FBlendForm;
	
protected:
	virtual void __fastcall DrawDragDockImage(void);
	virtual void __fastcall EraseDragDockImage(void);
	virtual bool __fastcall GetEraseWhenMoving(void);
	
public:
	__fastcall virtual TIDEDragDockObject(Controls::TControl* AControl);
	__fastcall virtual ~TIDEDragDockObject(void);
};


//-- var, const, procedure ---------------------------------------------------
extern PACKAGE void __fastcall PumpDockingMessages(void);

}	/* namespace Dockform */
using namespace Dockform;
#pragma pack(pop)
#pragma option pop

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// Dockform
