www.pudn.com > FormMagnet224forDelphi.rar > FormMagnet.hpp, change:2007-04-27,size:6260b


// Borland C++ Builder 
// Copyright (c) 1995, 2002 by Borland Software Corporation 
// All rights reserved 
 
// (DO NOT EDIT: machine generated header) 'FormMagnet.pas' rev: 6.00 
 
#ifndef FormMagnetHPP 
#define FormMagnetHPP 
 
#pragma delphiheader begin 
#pragma option push -w- 
#pragma option push -Vx 
#include <Forms.hpp>	// Pascal unit 
#include <Classes.hpp>	// Pascal unit 
#include <Messages.hpp>	// Pascal unit 
#include <Windows.hpp>	// Pascal unit 
#include <SysInit.hpp>	// Pascal unit 
#include <System.hpp>	// Pascal unit 
 
//-- user supplied ----------------------------------------------------------- 
 
namespace Formmagnet 
{ 
//-- type declarations ------------------------------------------------------- 
class DELPHICLASS TMagnetFormHookComponent; 
class PASCALIMPLEMENTATION TMagnetFormHookComponent : public Classes::TComponent  
{ 
	typedef Classes::TComponent inherited; 
	 
private: 
	bool Hooked; 
	Forms::TForm* FParentForm; 
	unsigned FParentHandle; 
	void *FOldWndProc; 
	void *FNewWndProc; 
	void __fastcall HookWndProc(Messages::TMessage &Message); 
	 
protected: 
	virtual void __fastcall MessageBefore(Messages::TMessage &Message, bool &Handled); 
	virtual void __fastcall MessageAfter(Messages::TMessage &Message); 
	virtual void __fastcall FormRecreate(void); 
	virtual unsigned __fastcall GetParentHandle(void); 
	 
public: 
	__fastcall virtual TMagnetFormHookComponent(Classes::TComponent* aOwner); 
	__fastcall virtual ~TMagnetFormHookComponent(void); 
	__property Forms::TForm* ParentForm = {read=FParentForm}; 
	__property unsigned ParentHandle = {read=FParentHandle, nodefault}; 
	__property void * OldWndProc = {read=FOldWndProc}; 
}; 
 
 
#pragma option push -b- 
enum TScreenArea { saFullScreen, saWorkArea }; 
#pragma option pop 
 
class DELPHICLASS TScreenMagnet; 
class PASCALIMPLEMENTATION TScreenMagnet : public Classes::TPersistent  
{ 
	typedef Classes::TPersistent inherited; 
	 
private: 
	TScreenArea FArea; 
	Byte FDesktopPower; 
	bool FTop; 
	bool FBottom; 
	bool FLeft; 
	bool FRight; 
	 
public: 
	__fastcall TScreenMagnet(void); 
	 
__published: 
	__property TScreenArea Area = {read=FArea, write=FArea, nodefault}; 
	__property Byte DesktopPower = {read=FDesktopPower, write=FDesktopPower, nodefault}; 
	__property bool Top = {read=FTop, write=FTop, nodefault}; 
	__property bool Bottom = {read=FBottom, write=FBottom, nodefault}; 
	__property bool Left = {read=FLeft, write=FLeft, nodefault}; 
	__property bool Right = {read=FRight, write=FRight, nodefault}; 
public: 
	#pragma option push -w-inl 
	/* TPersistent.Destroy */ inline __fastcall virtual ~TScreenMagnet(void) { } 
	#pragma option pop 
	 
}; 
 
 
class DELPHICLASS TGluedObject; 
class DELPHICLASS TFormMagnet; 
#pragma option push -b- 
enum TMagnetType { mkOnMoving, mkAfterMoving }; 
#pragma option pop 
 
typedef void __fastcall (__closure *TOnGlue)(System::TObject* Sender, Forms::TForm* AnotherForm, bool &AllowGlue); 
 
typedef void __fastcall (__closure *TOnMagnet)(System::TObject* Sender, Forms::TForm* AnotherForm, bool &AllowMagnet); 
 
class DELPHICLASS TGlueList; 
class PASCALIMPLEMENTATION TGlueList : public Classes::TList  
{ 
	typedef Classes::TList inherited; 
	 
public: 
	bool __fastcall IsGluedTo(TFormMagnet* Magnet); 
	Types::TPoint __fastcall GetFormPositionByMagnet(TFormMagnet* Magnet); 
public: 
	#pragma option push -w-inl 
	/* TList.Destroy */ inline __fastcall virtual ~TGlueList(void) { } 
	#pragma option pop 
	 
public: 
	#pragma option push -w-inl 
	/* TObject.Create */ inline __fastcall TGlueList(void) : Classes::TList() { } 
	#pragma option pop 
	 
}; 
 
 
class PASCALIMPLEMENTATION TFormMagnet : public TMagnetFormHookComponent  
{ 
	typedef TMagnetFormHookComponent inherited; 
	 
private: 
	bool FActive; 
	bool FGlue; 
	bool FFormDragable; 
	TMagnetType FMagnetType; 
	Byte FPower; 
	TScreenMagnet* FScreenMagnet; 
	TOnGlue FOnGlue; 
	TOnMagnet FOnMagnet; 
	Classes::TNotifyEvent FOnDragMove; 
	bool Suspended; 
	TGlueList* GluedTo; 
	bool Moving; 
	#pragma pack(push, 1) 
	Types::TPoint BeginMovingPos; 
	#pragma pack(pop) 
	 
	void __fastcall SetActive(bool Value); 
	bool __fastcall AllowGlueTo(TFormMagnet* AnotherMagnet); 
	bool __fastcall AllowMagnetTo(TFormMagnet* AnotherMagnet); 
	void __fastcall RecalculateGluing(void); 
	void __fastcall MagnetByDraggingRect(Types::TRect &DraggingRect, bool CalculateRelativePlacement, bool GlueOnly); 
	 
protected: 
	virtual void __fastcall MessageBefore(Messages::TMessage &Message, bool &Handled); 
	virtual void __fastcall MessageAfter(Messages::TMessage &Message); 
	 
public: 
	__fastcall virtual TFormMagnet(Classes::TComponent* aOwner); 
	__fastcall virtual ~TFormMagnet(void); 
	void __fastcall DoMagnet(void); 
	 
__published: 
	__property bool Active = {read=FActive, write=SetActive, nodefault}; 
	__property bool Glue = {read=FGlue, write=FGlue, nodefault}; 
	__property bool FormDragable = {read=FFormDragable, write=FFormDragable, nodefault}; 
	__property TMagnetType MagnetType = {read=FMagnetType, write=FMagnetType, nodefault}; 
	__property Byte Power = {read=FPower, write=FPower, nodefault}; 
	__property TScreenMagnet* ScreenMagnet = {read=FScreenMagnet, write=FScreenMagnet}; 
	__property TOnGlue OnGlue = {read=FOnGlue, write=FOnGlue}; 
	__property TOnMagnet OnMagnet = {read=FOnMagnet, write=FOnMagnet}; 
	__property Classes::TNotifyEvent OnDragMove = {read=FOnDragMove, write=FOnDragMove}; 
}; 
 
 
class PASCALIMPLEMENTATION TGluedObject : public System::TObject  
{ 
	typedef System::TObject inherited; 
	 
private: 
	TFormMagnet* Magnet; 
	#pragma pack(push, 1) 
	Types::TPoint Position; 
	#pragma pack(pop) 
	 
	 
public: 
	__fastcall TGluedObject(TFormMagnet* aMagnet, int aLeft, int aTop); 
public: 
	#pragma option push -w-inl 
	/* TObject.Destroy */ inline __fastcall virtual ~TGluedObject(void) { } 
	#pragma option pop 
	 
}; 
 
 
//-- var, const, procedure --------------------------------------------------- 
extern PACKAGE void __fastcall Register(void); 
 
}	/* namespace Formmagnet */ 
using namespace Formmagnet; 
#pragma option pop	// -w- 
#pragma option pop	// -Vx 
 
#pragma delphiheader end. 
//-- end unit ---------------------------------------------------------------- 
#endif	// FormMagnet