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

// (DO NOT EDIT: machine generated header) 'ahmthotspotmanager.pas' rev: 6.00

#ifndef ahmthotspotmanagerHPP
#define ahmthotspotmanagerHPP

#pragma delphiheader begin
#pragma option push -w-
#pragma option push -Vx
#include <ahmthookclass.hpp>	// Pascal unit
#include <ahmsystemconst.hpp>	// Pascal unit
#include <ahmsystemclass.hpp>	// Pascal unit
#include <Dialogs.hpp>	// Pascal unit
#include <Forms.hpp>	// Pascal unit
#include <Controls.hpp>	// Pascal unit
#include <Graphics.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit
#include <SysUtils.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 Ahmthotspotmanager
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TAHMHotSpot;
typedef void __fastcall (__closure *TAHMHotSpotMove)(System::TObject* Sender, TAHMHotSpot* HotSpot);

class DELPHICLASS TAHMHotSpotManager;
class DELPHICLASS TAHMHotSpots;
class PASCALIMPLEMENTATION TAHMHotSpots : public Ahmsystemclass::TAHMCollection 
{
	typedef Ahmsystemclass::TAHMCollection inherited;
	
public:
	TAHMHotSpot* operator[](int Index) { return Items[Index]; }
	
private:
	TAHMHotSpotManager* FAHMHotSpotManager;
	TAHMHotSpot* __fastcall GetAHMHotSpot(int Index);
	void __fastcall SetAHMHotSpot(int Index, TAHMHotSpot* Value);
	
protected:
	DYNAMIC Classes::TPersistent* __fastcall GetOwner(void);
	
public:
	__fastcall TAHMHotSpots(TAHMHotSpotManager* AOwner);
	HIDESBASE TAHMHotSpot* __fastcall Add(void);
	HIDESBASE bool __fastcall Delete(int Index);
	__property TAHMHotSpot* Items[int Index] = {read=GetAHMHotSpot, write=SetAHMHotSpot/*, default*/};
public:
	#pragma option push -w-inl
	/* TCollection.Destroy */ inline __fastcall virtual ~TAHMHotSpots(void) { }
	#pragma option pop
	
};


class PASCALIMPLEMENTATION TAHMHotSpotManager : public Ahmsystemclass::TAHMSystemComponent 
{
	typedef Ahmsystemclass::TAHMSystemComponent inherited;
	
private:
	HWND FApplicationHandle;
	HWND FOwnerhandle;
	Controls::TWinControl* FOwnerForm;
	Ahmthookclass::TAHMHookClass* FHookClass;
	TAHMHotSpots* FAHMHotSpots;
	int FLastHotSpotID;
	int FCurrentHotSpotID;
	TAHMHotSpotMove FOnEnter;
	TAHMHotSpotMove FOnMouseOver;
	TAHMHotSpotMove FOnExit;
	Classes::TNotifyEvent FOverNoHotSpots;
	TAHMHotSpotMove FOnClick;
	TAHMHotSpotMove FOnRightClick;
	Classes::TNotifyEvent FBeforeSpotCalc;
	Classes::TNotifyEvent FAfterSpotCalc;
	void __fastcall SetAHMHotSpots(TAHMHotSpots* Value);
	void __fastcall SetOwnerForm(const Controls::TWinControl* Value);
	void __fastcall Hooked(Messages::TMessage &Msg, bool &Handled);
	
protected:
	void *NewWndProc;
	void *OldWndProc;
	virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation);
	__property Controls::TWinControl* OwnerForm = {read=FOwnerForm};
	__property HWND OwnerHandle = {read=FOwnerhandle, nodefault};
	__property HWND ApplicationHandle = {read=FApplicationHandle, nodefault};
	
public:
	__fastcall virtual TAHMHotSpotManager(Classes::TComponent* AOwner);
	virtual void __fastcall Loaded(void);
	__fastcall virtual ~TAHMHotSpotManager(void);
	__property int LastHotSpotID = {read=FLastHotSpotID, nodefault};
	__property int CurrentHotSpotID = {read=FCurrentHotSpotID, nodefault};
	
__published:
	__property TAHMHotSpots* HotSpots = {read=FAHMHotSpots, write=SetAHMHotSpots};
	__property TAHMHotSpotMove OnClick = {read=FOnClick, write=FOnClick};
	__property TAHMHotSpotMove OnRightClick = {read=FOnRightClick, write=FOnRightClick};
	__property TAHMHotSpotMove OnEnter = {read=FOnEnter, write=FOnEnter};
	__property TAHMHotSpotMove OnExit = {read=FOnExit, write=FOnExit};
	__property TAHMHotSpotMove OnMouseOver = {read=FOnMouseOver, write=FOnMouseOver};
	__property Classes::TNotifyEvent OverNoHotSpots = {read=FOverNoHotSpots, write=FOverNoHotSpots};
	__property Classes::TNotifyEvent AfterSpotCalc = {read=FAfterSpotCalc, write=FAfterSpotCalc};
	__property Classes::TNotifyEvent BeforeSpotCalc = {read=FBeforeSpotCalc, write=FBeforeSpotCalc};
	__property Controls::TWinControl* WinControl = {read=FOwnerForm, write=SetOwnerForm};
};


class PASCALIMPLEMENTATION TAHMHotSpot : public Classes::TCollectionItem 
{
	typedef Classes::TCollectionItem inherited;
	
private:
	TAHMHotSpotManager* FAHMHotSpotManager;
	bool FActive;
	int FSpotTop;
	int FSpotRight;
	int FSpotLeft;
	int FSpotBottom;
	TAHMHotSpotMove FOnExit;
	TAHMHotSpotMove FOnEnter;
	TAHMHotSpotMove FOnMouseOver;
	Controls::TGraphicControl* FControl;
	TAHMHotSpotMove FOnClick;
	TAHMHotSpotMove FOnRightClick;
	AnsiString FHotSpotName;
	void __fastcall SetActive(const bool Value);
	void __fastcall SetControl(const Controls::TGraphicControl* Value);
	void __fastcall SetSpotBottom(const int Value);
	void __fastcall SetSpotLeft(const int Value);
	void __fastcall SetSpotRight(const int Value);
	void __fastcall SetSpotTop(const int Value);
	Types::TRect __fastcall GetHotSpotRect();
	void __fastcall SetHotSpotName(const AnsiString Value);
	
protected:
	virtual AnsiString __fastcall GetDisplayName();
	void __fastcall OnEnterProc(void);
	void __fastcall OnClickProc(void);
	void __fastcall OnRightClickProc(void);
	void __fastcall OnQuitProc(void);
	
public:
	__fastcall virtual TAHMHotSpot(Classes::TCollection* Collection);
	__fastcall virtual ~TAHMHotSpot(void);
	virtual void __fastcall Assign(Classes::TPersistent* Source);
	int __fastcall GetHotSpotID(void);
	__property TAHMHotSpotManager* Owner = {read=FAHMHotSpotManager};
	__property Types::TRect HotSpotRect = {read=GetHotSpotRect};
	
__published:
	__property Controls::TGraphicControl* GraphicControl = {read=FControl, write=SetControl};
	__property bool Active = {read=FActive, write=SetActive, default=1};
	__property int SpotLeft = {read=FSpotLeft, write=SetSpotLeft, default=0};
	__property int SpotRight = {read=FSpotRight, write=SetSpotRight, default=100};
	__property int SpotTop = {read=FSpotTop, write=SetSpotTop, default=0};
	__property int SpotBottom = {read=FSpotBottom, write=SetSpotBottom, default=100};
	__property AnsiString HotSpotName = {read=FHotSpotName, write=SetHotSpotName};
	__property TAHMHotSpotMove OnClick = {read=FOnClick, write=FOnClick};
	__property TAHMHotSpotMove OnRightClick = {read=FOnRightClick, write=FOnRightClick};
	__property TAHMHotSpotMove OnEnter = {read=FOnEnter, write=FOnEnter};
	__property TAHMHotSpotMove OnExit = {read=FOnExit, write=FOnExit};
	__property TAHMHotSpotMove OnMouseOver = {read=FOnMouseOver, write=FOnMouseOver};
};


//-- var, const, procedure ---------------------------------------------------

}	/* namespace Ahmthotspotmanager */
using namespace Ahmthotspotmanager;
#pragma option pop	// -w-
#pragma option pop	// -Vx

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