// Borland C++ Builder
// Copyright (c) 1995, 1998 by Borland International
// All rights reserved

// (DO NOT EDIT: machine generated header) 'AHMTHotSpotManager.pas' rev: 3.00

#ifndef AHMTHotSpotManagerHPP
#define AHMTHotSpotManagerHPP
#include <AHMTHookClass.hpp>
#include <AHMSystemConst.hpp>
#include <AHMSystemClass.hpp>
#include <Dialogs.hpp>
#include <Forms.hpp>
#include <Controls.hpp>
#include <Graphics.hpp>
#include <Classes.hpp>
#include <SysUtils.hpp>
#include <Messages.hpp>
#include <Windows.hpp>
#include <SysInit.hpp>
#include <System.hpp>

//-- 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 Classes::TCollection 
{
	typedef Classes::TCollection inherited;
	
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);
	bool __fastcall Delete(int Index);
	__property TAHMHotSpotManager* Owner = {read=FAHMHotSpotManager};
	__property TAHMHotSpot* Items[int Index] = {read=GetAHMHotSpot, write=SetAHMHotSpot/*, default*/};
public:
		
	/* TCollection.Destroy */ __fastcall virtual ~TAHMHotSpots(void) { }
	
};

class PASCALIMPLEMENTATION TAHMHotSpotManager : public Ahmsystemclass::TAHMSystemsComponent 
{
	typedef Ahmsystemclass::TAHMSystemsComponent 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;
	System::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);
	Windows::TRect __fastcall GetHotSpotRect(void);
	void __fastcall SetHotSpotName(const System::AnsiString Value);
	
protected:
	virtual System::AnsiString __fastcall GetDisplayName(void);
	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 Windows::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 System::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 */
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using namespace Ahmthotspotmanager;
#endif
//-- end unit ----------------------------------------------------------------
#endif	// AHMTHotSpotManager
