// CodeGear C++Builder
// Copyright (c) 1995, 2013 by Embarcadero Technologies, Inc.
// All rights reserved

// (DO NOT EDIT: machine generated header) 'FMX.TMSPopup.pas' rev: 26.00 (Windows)

#ifndef Fmx_TmspopupHPP
#define Fmx_TmspopupHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member 
#pragma pack(push,8)
#include <System.hpp>	// Pascal unit
#include <SysInit.hpp>	// Pascal unit
#include <System.Classes.hpp>	// Pascal unit
#include <System.SysUtils.hpp>	// Pascal unit
#include <System.Types.hpp>	// Pascal unit
#include <System.UITypes.hpp>	// Pascal unit
#include <FMX.Forms.hpp>	// Pascal unit
#include <FMX.Platform.hpp>	// Pascal unit
#include <FMX.Objects.hpp>	// Pascal unit
#include <FMX.Types.hpp>	// Pascal unit
#include <FMX.Dialogs.hpp>	// Pascal unit
#include <FMX.TMSBaseControl.hpp>	// Pascal unit
#include <FMX.TMSHTMLText.hpp>	// Pascal unit
#include <FMX.TMSBarButton.hpp>	// Pascal unit
#include <FMX.TMSBitmapContainer.hpp>	// Pascal unit
#include <FMX.Effects.hpp>	// Pascal unit
#include <FMX.Controls.hpp>	// Pascal unit
#include <System.UIConsts.hpp>	// Pascal unit
#include <FMX.Styles.hpp>	// Pascal unit
#include <FMX.StdCtrls.hpp>	// Pascal unit
#include <FMX.Layouts.hpp>	// Pascal unit
#include <FMX.Graphics.hpp>	// Pascal unit

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

namespace Fmx
{
namespace Tmspopup
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TProtectedControl;
class PASCALIMPLEMENTATION TProtectedControl : public Fmx::Controls::TControl
{
	typedef Fmx::Controls::TControl inherited;
	
public:
	/* TControl.Create */ inline __fastcall virtual TProtectedControl(System::Classes::TComponent* AOwner) : Fmx::Controls::TControl(AOwner) { }
	/* TControl.Destroy */ inline __fastcall virtual ~TProtectedControl(void) { }
	
};


enum DECLSPEC_DENUM TTMSFMXPopupShapeArrowPosition : unsigned char { paLeftTop, paLeftCenter, paLeftBottom, paTopLeft, paTopCenter, paTopRight, paRightTop, paRightCenter, paRightBottom, paBottomLeft, paBottomCenter, paBottomRight };

class DELPHICLASS TTMSFMXPopupShape;
class PASCALIMPLEMENTATION TTMSFMXPopupShape : public Fmx::Objects::TRectangle
{
	typedef Fmx::Objects::TRectangle inherited;
	
private:
	TTMSFMXPopupShapeArrowPosition FArrowPosition;
	float FArrowHeight;
	float FArrowWidth;
	void __fastcall SetArrowPosition(const TTMSFMXPopupShapeArrowPosition Value);
	void __fastcall SetArrowHeight(const float Value);
	void __fastcall SetArrowWidth(const float Value);
	
public:
	__fastcall virtual TTMSFMXPopupShape(System::Classes::TComponent* AOwner);
	virtual void __fastcall Paint(void);
	Fmx::Graphics::TPathData* __fastcall GetPath(void);
	
__published:
	__property TTMSFMXPopupShapeArrowPosition ArrowPosition = {read=FArrowPosition, write=SetArrowPosition, default=4};
	__property float ArrowHeight = {read=FArrowHeight, write=SetArrowHeight};
	__property float ArrowWidth = {read=FArrowWidth, write=SetArrowWidth};
public:
	/* TShape.Destroy */ inline __fastcall virtual ~TTMSFMXPopupShape(void) { }
	
};


class DELPHICLASS TTMSFMXPopupButton;
class DELPHICLASS TTMSFMXPopup;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXPopupButton : public System::Classes::TCollectionItem
{
	typedef System::Classes::TCollectionItem inherited;
	
private:
	TTMSFMXPopup* FOwner;
	Fmx::Tmsbarbutton::TTMSFMXBarButton* FPopupButton;
	float FWidth;
	System::UnicodeString FBitmapName;
	Fmx::Tmsbarbutton::TTMSFMXBarButtonKind FKind;
	System::UnicodeString FText;
	bool FShowImage;
	bool FShowText;
	Fmx::Tmsbarbutton::TTMSFMXBarButtonShapeLayout FLayout;
	void __fastcall SetBitmapName(const System::UnicodeString Value);
	void __fastcall SetKind(const Fmx::Tmsbarbutton::TTMSFMXBarButtonKind Value);
	void __fastcall SetText(const System::UnicodeString Value);
	void __fastcall SetWidth(const float Value);
	void __fastcall SetShowImage(const bool Value);
	void __fastcall SetShowText(const bool Value);
	void __fastcall SetLayout(const Fmx::Tmsbarbutton::TTMSFMXBarButtonShapeLayout Value);
	
protected:
	__property Fmx::Tmsbarbutton::TTMSFMXBarButton* PopupButton = {read=FPopupButton, write=FPopupButton};
	
public:
	__fastcall virtual TTMSFMXPopupButton(System::Classes::TCollection* Collection);
	__fastcall virtual ~TTMSFMXPopupButton(void);
	Fmx::Tmsbarbutton::TTMSFMXBarButton* __fastcall Button(void);
	
__published:
	__property float Width = {read=FWidth, write=SetWidth};
	__property bool ShowImage = {read=FShowImage, write=SetShowImage, default=0};
	__property bool ShowText = {read=FShowText, write=SetShowText, default=1};
	__property System::UnicodeString Text = {read=FText, write=SetText};
	__property System::UnicodeString BitmapName = {read=FBitmapName, write=SetBitmapName};
	__property Fmx::Tmsbarbutton::TTMSFMXBarButtonKind Kind = {read=FKind, write=SetKind, default=0};
	__property Fmx::Tmsbarbutton::TTMSFMXBarButtonShapeLayout Layout = {read=FLayout, write=SetLayout, default=0};
};

#pragma pack(pop)

class DELPHICLASS TTMSFMXPopupButtons;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXPopupButtons : public Fmx::Tmsbasecontrol::TTMSFMXBaseCollection
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseCollection inherited;
	
public:
	TTMSFMXPopupButton* operator[](int Index) { return Items[Index]; }
	
private:
	TTMSFMXPopup* FOwner;
	HIDESBASE TTMSFMXPopupButton* __fastcall GetItem(int Index);
	HIDESBASE void __fastcall SetItem(int Index, TTMSFMXPopupButton* const Value);
	
protected:
	DYNAMIC System::Classes::TPersistent* __fastcall GetOwner(void);
	
public:
	__fastcall TTMSFMXPopupButtons(TTMSFMXPopup* AOwner);
	HIDESBASE TTMSFMXPopupButton* __fastcall Add(void);
	HIDESBASE TTMSFMXPopupButton* __fastcall Insert(int Index);
	__property TTMSFMXPopupButton* Items[int Index] = {read=GetItem, write=SetItem/*, default*/};
public:
	/* TCollection.Destroy */ inline __fastcall virtual ~TTMSFMXPopupButtons(void) { }
	
};

#pragma pack(pop)

typedef void __fastcall (__closure *TTMSFMXPopupButtonEvent)(System::TObject* Sender, TTMSFMXPopupButton* AButton, Fmx::Tmsbarbutton::TTMSFMXBarButton* AButtonShape);

class PASCALIMPLEMENTATION TTMSFMXPopup : public Fmx::Tmsbasecontrol::TTMSFMXBaseControl
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseControl inherited;
	
private:
	bool FCreating;
	Fmx::Types::TTimer* FDragTimer;
	bool FDestroying;
	Fmx::Types::TFmxObject* FSaveParent;
	Fmx::Types::TFmxObject* FSaveParentDetail;
	Fmx::Forms::TCustomForm* FPopupForm;
	Fmx::Controls::TControl* FDetailControl;
	Fmx::Controls::TControl* FPlacementTarget;
	Fmx::Controls::TPlacement FPlacement;
	Fmx::Types::TBounds* FPlacementRectangle;
	float FVerticalOffset;
	float FHorizontalOffset;
	bool FStaysOpen;
	Fmx::Types::TBounds* FControlMargins;
	bool FAutoPosition;
	float FArrowWidth;
	float FArrowHeight;
	TTMSFMXPopupShapeArrowPosition FArrowPosition;
	System::UnicodeString FHeaderText;
	System::Classes::TNotifyEvent FOnClosePopup;
	System::UnicodeString FFooterText;
	bool FShowHeader;
	bool FShowFooter;
	float FHeaderHeight;
	float FFooterHeight;
	TTMSFMXPopupButtons* FHeaderButtons;
	TTMSFMXPopupButtons* FFooterButtons;
	TTMSFMXPopupButtonEvent FOnCustomizeFooterButton;
	TTMSFMXPopupButtonEvent FOnCustomizeHeaderButton;
	Fmx::Tmsbitmapcontainer::TTMSFMXBitmapContainer* FBitmapContainer;
	bool FDragWithParent;
	TTMSFMXPopupButtonEvent FOnHeaderButtonClick;
	TTMSFMXPopupButtonEvent FOnFooterButtonClick;
	Fmx::Types::TBounds* FEffectMargins;
	Fmx::Tmshtmltext::TTMSFMXHTMLTextAnchorClickEvent FOnFooterAnchorClick;
	Fmx::Tmshtmltext::TTMSFMXHTMLTextAnchorClickEvent FOnHeaderAnchorClick;
	bool FShowActivated;
	bool FTransparent;
	bool FShadow;
	Fmx::Types::TFmxObject* FParentControl;
	void __fastcall SetPlacementRectangle(Fmx::Types::TBounds* const Value);
	void __fastcall SetArrowHeight(const float Value);
	void __fastcall SetArrowPosition(const TTMSFMXPopupShapeArrowPosition Value);
	void __fastcall SetArrowWidth(const float Value);
	void __fastcall SetHeaderText(const System::UnicodeString Value);
	System::UnicodeString __fastcall GetVersion(void);
	int __fastcall GetVersionNr(void);
	void __fastcall SetVersion(const System::UnicodeString Value);
	void __fastcall SetFooterText(const System::UnicodeString Value);
	void __fastcall SetShowFooter(const bool Value);
	void __fastcall SetShowHeader(const bool Value);
	void __fastcall SetFooterHeight(const float Value);
	void __fastcall SetHeaderHeight(const float Value);
	void __fastcall SetFooterButtons(TTMSFMXPopupButtons* const Value);
	void __fastcall SetHeaderButtons(TTMSFMXPopupButtons* const Value);
	void __fastcall DoTimer(System::TObject* Sender);
	void __fastcall SetDetailControl(Fmx::Controls::TControl* const Value);
	void __fastcall SetEffectMargins(Fmx::Types::TBounds* const Value);
	void __fastcall SetTransparent(const bool Value);
	bool __fastcall GetIsOpen(void);
	void __fastcall SetIsOpen(const bool Value);
	void __fastcall SetShadow(const bool Value);
	
protected:
	Fmx::Forms::TCommonCustomForm* __fastcall GetParentForm(Fmx::Types::TFmxObject* AControl = (Fmx::Types::TFmxObject*)(0x0));
	void __fastcall DoMouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	void __fastcall AssignEvents(void);
	void __fastcall HeaderAnchorClick(System::TObject* Sender, System::UnicodeString AAnchor);
	void __fastcall FooterAnchorClick(System::TObject* Sender, System::UnicodeString AAnchor);
	void __fastcall HeaderButtonClick(System::TObject* Sender);
	void __fastcall FooterButtonClick(System::TObject* Sender);
	void __fastcall UpdatePopupShape(void);
	bool __fastcall IsDetailControlAdded(Fmx::Types::TFmxObject* AControl);
	virtual void __fastcall DialogKey(System::Word &Key, System::Classes::TShiftState Shift);
	virtual NativeUInt __fastcall GetInstance(void);
	void __fastcall DoFormClose(System::TObject* Sender, System::Uitypes::TCloseAction &CloseAction);
	virtual void __fastcall Notification(System::Classes::TComponent* AComponent, System::Classes::TOperation Operation);
	void __fastcall ApplyAutoPosition(void);
	void __fastcall UpdateHeader(void);
	void __fastcall UpdateFooter(void);
	void __fastcall UpdateShadow(void);
	void __fastcall UpdateHeaderPos(void);
	void __fastcall UpdateFooterPos(void);
	void __fastcall UpdateShape(void);
	void __fastcall UpdateButtons(void);
	void __fastcall CleanUpHeaderButtons(void);
	void __fastcall CleanUpFooterButtons(void);
	Fmx::Tmsbarbutton::TTMSFMXBarButton* __fastcall DoesHeaderButtonExist(System::UnicodeString AButtonName);
	Fmx::Tmsbarbutton::TTMSFMXBarButton* __fastcall DoesFooterButtonExist(System::UnicodeString AButtonName);
	Fmx::Types::TFmxObject* __fastcall GetHeader(void);
	Fmx::Types::TFmxObject* __fastcall GetFooter(void);
	Fmx::Types::TFmxObject* __fastcall GetHeaderText(void);
	Fmx::Types::TFmxObject* __fastcall GetFooterText(void);
	Fmx::Tmsbarbutton::TTMSFMXBarButton* __fastcall GetButton(void);
	Fmx::Types::TFmxObject* __fastcall GetPopup(void);
	void __fastcall DoClose(void);
	
public:
	__property Fmx::Types::TFmxObject* ParentControl = {read=FParentControl, write=FParentControl};
	virtual void __fastcall ApplyStyle(void);
	__fastcall virtual TTMSFMXPopup(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXPopup(void);
	virtual void __fastcall Resize(void);
	virtual void __fastcall Loaded(void);
	void __fastcall Popup(void);
	void __fastcall ClosePopup(void);
	void __fastcall ShowPopup(Fmx::Controls::TControl* AControl = (Fmx::Controls::TControl*)(0x0), Fmx::Controls::TPlacement APlacement = (Fmx::Controls::TPlacement)(0x0));
	void __fastcall HidePopup(void);
	void __fastcall ApplyPlacement(void);
	__property bool IsOpen = {read=GetIsOpen, write=SetIsOpen, nodefault};
	
__published:
	__property bool Transparent = {read=FTransparent, write=SetTransparent, default=0};
	__property bool Shadow = {read=FShadow, write=SetShadow, default=1};
	__property Fmx::Types::TBounds* EffectMargins = {read=FEffectMargins, write=SetEffectMargins};
	__property bool AutoPosition = {read=FAutoPosition, write=FAutoPosition, default=1};
	__property Fmx::Controls::TControl* DetailControl = {read=FDetailControl, write=SetDetailControl};
	__property Fmx::Controls::TPlacement Placement = {read=FPlacement, write=FPlacement, default=0};
	__property Fmx::Controls::TControl* PlacementTarget = {read=FPlacementTarget, write=FPlacementTarget};
	__property Fmx::Types::TBounds* PlacementRectangle = {read=FPlacementRectangle, write=SetPlacementRectangle};
	__property float HorizontalOffset = {read=FHorizontalOffset, write=FHorizontalOffset};
	__property float VerticalOffset = {read=FVerticalOffset, write=FVerticalOffset};
	__property bool StaysOpen = {read=FStaysOpen, write=FStaysOpen, default=0};
	__property bool ShowActivated = {read=FShowActivated, write=FShowActivated, default=0};
	__property Fmx::Tmsbitmapcontainer::TTMSFMXBitmapContainer* BitmapContainer = {read=FBitmapContainer, write=FBitmapContainer};
	__property TTMSFMXPopupButtons* HeaderButtons = {read=FHeaderButtons, write=SetHeaderButtons};
	__property TTMSFMXPopupButtons* FooterButtons = {read=FFooterButtons, write=SetFooterButtons};
	__property System::UnicodeString FooterText = {read=FFooterText, write=SetFooterText};
	__property System::UnicodeString HeaderText = {read=FHeaderText, write=SetHeaderText};
	__property float FooterHeight = {read=FFooterHeight, write=SetFooterHeight};
	__property float HeaderHeight = {read=FHeaderHeight, write=SetHeaderHeight};
	__property bool ShowHeader = {read=FShowHeader, write=SetShowHeader, default=1};
	__property bool ShowFooter = {read=FShowFooter, write=SetShowFooter, default=1};
	__property TTMSFMXPopupShapeArrowPosition ArrowPosition = {read=FArrowPosition, write=SetArrowPosition, default=4};
	__property float ArrowHeight = {read=FArrowHeight, write=SetArrowHeight};
	__property float ArrowWidth = {read=FArrowWidth, write=SetArrowWidth};
	__property System::Classes::TNotifyEvent OnClosePopup = {read=FOnClosePopup, write=FOnClosePopup};
	__property System::UnicodeString Version = {read=GetVersion, write=SetVersion};
	__property bool DragWithParent = {read=FDragWithParent, write=FDragWithParent, default=1};
	__property Fmx::Tmshtmltext::TTMSFMXHTMLTextAnchorClickEvent OnHeaderAnchorClick = {read=FOnHeaderAnchorClick, write=FOnHeaderAnchorClick};
	__property Fmx::Tmshtmltext::TTMSFMXHTMLTextAnchorClickEvent OnFooterAnchorClick = {read=FOnFooterAnchorClick, write=FOnFooterAnchorClick};
	__property TTMSFMXPopupButtonEvent OnHeaderButtonClick = {read=FOnHeaderButtonClick, write=FOnHeaderButtonClick};
	__property TTMSFMXPopupButtonEvent OnFooterButtonClick = {read=FOnFooterButtonClick, write=FOnFooterButtonClick};
	__property TTMSFMXPopupButtonEvent OnCustomizeHeaderButton = {read=FOnCustomizeHeaderButton, write=FOnCustomizeHeaderButton};
	__property TTMSFMXPopupButtonEvent OnCustomizeFooterButton = {read=FOnCustomizeFooterButton, write=FOnCustomizeFooterButton};
};


//-- var, const, procedure ---------------------------------------------------
static const System::Int8 MAJ_VER = System::Int8(0x1);
static const System::Int8 MIN_VER = System::Int8(0x5);
static const System::Int8 REL_VER = System::Int8(0x0);
static const System::Int8 BLD_VER = System::Int8(0x2);
}	/* namespace Tmspopup */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_TMSPOPUP)
using namespace Fmx::Tmspopup;
#endif
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX)
using namespace Fmx;
#endif
#pragma pack(pop)
#pragma option pop

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