// CodeGear C++Builder
// Copyright (c) 1995, 2007 by CodeGear
// All rights reserved

// (DO NOT EDIT: machine generated header) 'Easyscrollframe.pas' rev: 11.00

#ifndef EasyscrollframeHPP
#define EasyscrollframeHPP

#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 <Themes.hpp>	// Pascal unit
#include <Uxtheme.hpp>	// Pascal unit
#include <Controls.hpp>	// Pascal unit
#include <Mpcommonobjects.hpp>	// Pascal unit
#include <Mpcommonutilities.hpp>	// Pascal unit
#include <Menus.hpp>	// Pascal unit

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

namespace Easyscrollframe
{
//-- type declarations -------------------------------------------------------
#pragma option push -b-
enum TEasyScrollButtonState { sbsHovering, sbsDown, sbsAutoClick, sbsAutoScrollTimerRunning };
#pragma option pop

typedef Set<TEasyScrollButtonState, sbsHovering, sbsAutoScrollTimerRunning>  TEasyScrollButtonStates;

#pragma option push -b-
enum TEasyScrollButtonDir { sbdLeft, sbdUp, sbdDown, sbdRight };
#pragma option pop

#pragma option push -b-
enum TEasyTimerType { ettAutoScrollDelay, ettAutoScroll };
#pragma option pop

class DELPHICLASS TCustomEasyScrollButton;
class PASCALIMPLEMENTATION TCustomEasyScrollButton : public Mpcommonobjects::TCommonCanvasControl 
{
	typedef Mpcommonobjects::TCommonCanvasControl inherited;
	
private:
	int FArrowSize;
	bool FAutoScroll;
	int FAutoScrollTime;
	int FAutoScrollTimeOut;
	TEasyScrollButtonDir FDirection;
	bool FFlat;
	Classes::TNotifyEvent FOnClick;
	TEasyScrollButtonStates FState;
	unsigned FTimerID;
	void *FTimerStub;
	void __fastcall SetDirection(const TEasyScrollButtonDir Value);
	void __fastcall SetFlat(const bool Value);
	
protected:
	virtual void __fastcall DoClick(void);
	virtual void __fastcall DoPaintRect(Graphics::TCanvas* ACanvas, const Types::TRect &WindowClipRect, bool SelectedOnly);
	DYNAMIC void __fastcall MouseDown(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
	DYNAMIC void __fastcall MouseMove(Classes::TShiftState Shift, int X, int Y);
	DYNAMIC void __fastcall MouseUp(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
	virtual void __fastcall SetEnabled(bool Value);
	void __fastcall StartAutoScrollTimer(TEasyTimerType TimerType);
	void __fastcall StopAutoScrollTimer(bool FreeStub);
	void __stdcall TimerProc(HWND Window, unsigned uMsg, unsigned idEvent, unsigned dwTime);
	HIDESBASE MESSAGE void __fastcall WMPaint(Messages::TWMPaint &Msg);
	__property int ArrowSize = {read=FArrowSize, write=FArrowSize, default=12};
	__property bool AutoScroll = {read=FAutoScroll, write=FAutoScroll, default=0};
	__property int AutoScrollDelay = {read=FAutoScrollTimeOut, write=FAutoScrollTimeOut, default=1000};
	__property int AutoScrollTime = {read=FAutoScrollTime, write=FAutoScrollTime, default=100};
	__property TEasyScrollButtonDir Direction = {read=FDirection, write=SetDirection, default=0};
	__property bool Flat = {read=FFlat, write=SetFlat, default=0};
	__property Classes::TNotifyEvent OnClick = {read=FOnClick, write=FOnClick};
	__property TEasyScrollButtonStates State = {read=FState, write=FState, nodefault};
	__property unsigned TimerID = {read=FTimerID, write=FTimerID, nodefault};
	__property void * TimerStub = {read=FTimerStub, write=FTimerStub};
	
public:
	__fastcall virtual TCustomEasyScrollButton(Classes::TComponent* AOwner);
	__fastcall virtual ~TCustomEasyScrollButton(void);
public:
	#pragma option push -w-inl
	/* TWinControl.CreateParented */ inline __fastcall TCustomEasyScrollButton(HWND ParentWindow) : Mpcommonobjects::TCommonCanvasControl(ParentWindow) { }
	#pragma option pop
	
};


class DELPHICLASS TEasyScrollButton;
class PASCALIMPLEMENTATION TEasyScrollButton : public TCustomEasyScrollButton 
{
	typedef TCustomEasyScrollButton inherited;
	
public:
	__property State ;
	
__published:
	__property Action ;
	__property ActionLink ;
	__property Align  = {default=0};
	__property Anchors  = {default=3};
	__property ArrowSize  = {default=12};
	__property AutoScroll  = {default=0};
	__property AutoScrollDelay  = {default=1000};
	__property AutoScrollTime  = {default=100};
	__property AutoSize  = {default=0};
	__property BorderWidth  = {default=0};
	__property Constraints ;
	__property Direction  = {default=0};
	__property DragCursor  = {default=-12};
	__property DragKind  = {default=0};
	__property DragMode  = {default=0};
	__property Enabled  = {default=1};
	__property Flat  = {default=0};
	__property OnCanResize ;
	__property OnClick ;
	__property OnConstrainedResize ;
	__property OnContextPopup ;
	__property OnDblClick ;
	__property OnDockDrop ;
	__property OnDockOver ;
	__property OnDragDrop ;
	__property OnDragOver ;
	__property OnEndDock ;
	__property OnEndDrag ;
	__property OnEnter ;
	__property OnExit ;
	__property OnKeyDown ;
	__property OnKeyPress ;
	__property OnKeyUp ;
	__property OnMouseDown ;
	__property OnMouseMove ;
	__property OnMouseUp ;
	__property OnMouseWheel ;
	__property OnMouseWheelDown ;
	__property OnMouseWheelUp ;
	__property OnResize ;
	__property OnStartDock ;
	__property OnStartDrag ;
	__property OnUnDock ;
	__property ParentShowHint  = {default=1};
	__property PopupMenu ;
	__property ShowHint ;
	__property TabOrder  = {default=-1};
	__property TabStop  = {default=0};
	__property Themed  = {default=1};
	__property Visible  = {default=1};
public:
	#pragma option push -w-inl
	/* TCustomEasyScrollButton.Create */ inline __fastcall virtual TEasyScrollButton(Classes::TComponent* AOwner) : TCustomEasyScrollButton(AOwner) { }
	#pragma option pop
	#pragma option push -w-inl
	/* TCustomEasyScrollButton.Destroy */ inline __fastcall virtual ~TEasyScrollButton(void) { }
	#pragma option pop
	
public:
	#pragma option push -w-inl
	/* TWinControl.CreateParented */ inline __fastcall TEasyScrollButton(HWND ParentWindow) : TCustomEasyScrollButton(ParentWindow) { }
	#pragma option pop
	
};


//-- var, const, procedure ---------------------------------------------------
static const Word TIMER_AUTOSCROLLDELAY = 0x3eb;
static const Word TIMER_AUTOSCROLL = 0x3ec;

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

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