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

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

#ifndef PpsaverHPP
#define PpsaverHPP
#include <Forms.hpp>
#include <Controls.hpp>
#include <ActiveX.hpp>
#include <Classes.hpp>
#include <Messages.hpp>
#include <SysInit.hpp>
#include <System.hpp>

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

namespace Ppsaver
{
//-- type declarations -------------------------------------------------------
typedef void __fastcall (__closure *TPropertyPageSaverErrorEvent)(System::TObject* Sender, int PageIndex
	, System::AnsiString PageName, System::AnsiString PageTitle, System::AnsiString ErrorMessage);

typedef void __fastcall (__closure *TDialogClosedEvent)(System::TObject* Sender, bool Cancelled);

typedef void __fastcall (__closure *TNewPropertyValue)(System::TObject* Sender, System::AnsiString PropertyId
	, System::AnsiString PropertyValue, System::AnsiString PropertyLabel);

enum TRegistryRoot { RR_HKEY_CURRENT_USER, RR_HKEY_LOCAL_MACHINE };

class DELPHICLASS TPropertyPageSaverBase;
class PASCALIMPLEMENTATION TPropertyPageSaverBase : public Controls::TCustomControl 
{
	typedef Controls::TCustomControl inherited;
	
private:
	Classes::TComponent* FAssociated;
	virtual TPropertyPageSaverBase* __fastcall CreateNewInstance(Classes::TComponent* Owner) = 0;
	virtual bool __fastcall Activate(const System::Variant &pIUnknown) = 0;
	virtual void __fastcall Deactivate(void) = 0;
	virtual bool __fastcall IsActive(void) = 0;
	virtual bool __fastcall RestoreProperties(void) = 0;
	virtual bool __fastcall ShowDialog(void) = 0;
	virtual bool __fastcall SaveProperties(void) = 0;
	virtual System::AnsiString __fastcall GetPropertiesState(void) = 0;
	virtual System::AnsiString __fastcall GetProperty(System::AnsiString PropertyId) = 0;
	virtual bool __fastcall SetProperty(System::AnsiString PropertyId, System::AnsiString Value) = 0;
	virtual bool __fastcall ClearProperties(void) = 0;
	virtual TRegistryRoot __fastcall GetRegistryRoot(void) = 0;
	virtual System::AnsiString __fastcall GetRegistryKey(void) = 0;
	virtual System::AnsiString __fastcall GetRegistrySubKey(void) = 0;
	virtual System::AnsiString __fastcall GetSelectPages(void) = 0;
	virtual System::AnsiString __fastcall GetDialogTitle(void) = 0;
	virtual Forms::TPosition __fastcall GetDialogPosition(void) = 0;
	virtual bool __fastcall GetIdentifyProperties(void) = 0;
	virtual void __fastcall SetRegistryRoot(TRegistryRoot Value) = 0;
	virtual void __fastcall SetRegistryKey(System::AnsiString Value) = 0;
	virtual void __fastcall SetRegistrySubKey(System::AnsiString Value) = 0;
	virtual void __fastcall SetDialogTitle(System::AnsiString Value) = 0;
	virtual void __fastcall SetDialogPosition(Forms::TPosition Value) = 0;
	virtual void __fastcall SetIdentifyProperties(bool Value) = 0;
	virtual void __fastcall SetSelectPages(System::AnsiString Value) = 0;
public:
	/* TCustomControl.Create */ __fastcall virtual TPropertyPageSaverBase(Classes::TComponent* AOwner) : 
		Controls::TCustomControl(AOwner) { }
	/* TCustomControl.Destroy */ __fastcall virtual ~TPropertyPageSaverBase(void) { }
	
public:
	/* TWinControl.CreateParented */ __fastcall TPropertyPageSaverBase(HWND ParentWindow) : Controls::TCustomControl(
		ParentWindow) { }
	
};

class DELPHICLASS TPropertyPageSaver;
class PASCALIMPLEMENTATION TPropertyPageSaver : public Ppsaver::TPropertyPageSaverBase 
{
	typedef Ppsaver::TPropertyPageSaverBase inherited;
	
private:
	void *Impl;
	int FReserved;
	TPropertyPageSaverErrorEvent FOnInterfaceError;
	Classes::TNotifyEvent FOnInvalidRegistryKey;
	TPropertyPageSaverErrorEvent FOnErrorSavingProperties;
	TPropertyPageSaverErrorEvent FOnErrorRestoringProperties;
	TNewPropertyValue FOnNewPropertyValue;
	Classes::TNotifyEvent FOnPropertiesRestored;
	Classes::TNotifyEvent FOnPropertiesSaved;
	TDialogClosedEvent FOnDialogClosed;
	System::AnsiString __fastcall GetVersion();
	void __fastcall SetVersion(System::AnsiString Value);
	virtual System::AnsiString __fastcall GetRegistryKey();
	virtual TRegistryRoot __fastcall GetRegistryRoot(void);
	virtual System::AnsiString __fastcall GetRegistrySubKey();
	virtual System::AnsiString __fastcall GetSelectPages();
	virtual System::AnsiString __fastcall GetDialogTitle();
	virtual Forms::TPosition __fastcall GetDialogPosition(void);
	virtual bool __fastcall GetIdentifyProperties(void);
	virtual void __fastcall SetRegistryKey(System::AnsiString Value);
	virtual void __fastcall SetRegistryRoot(TRegistryRoot Value);
	virtual void __fastcall SetRegistrySubKey(System::AnsiString Value);
	virtual void __fastcall SetDialogTitle(System::AnsiString Value);
	virtual void __fastcall SetDialogPosition(Forms::TPosition Value);
	virtual void __fastcall SetIdentifyProperties(bool Value);
	virtual void __fastcall SetSelectPages(System::AnsiString Value);
	
protected:
	virtual void __fastcall Paint(void);
	virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation
		);
	
public:
	__fastcall virtual TPropertyPageSaver(Classes::TComponent* AOwner);
	__fastcall virtual ~TPropertyPageSaver(void);
	virtual bool __fastcall Activate(const System::Variant &pIUnknown);
	virtual bool __fastcall ClearProperties(void);
	virtual TPropertyPageSaverBase* __fastcall CreateNewInstance(Classes::TComponent* Owner);
	virtual void __fastcall Deactivate(void);
	System::AnsiString __fastcall GetFullRegistryPath();
	Cardinal __fastcall GetInterfaceVersion(void);
	int __fastcall GetPagesCount(const System::Variant &pIUnknown);
	System::AnsiString __fastcall GetPageTitle(const System::Variant &pIUnknown, int PageIndex);
	virtual System::AnsiString __fastcall GetPropertiesState();
	virtual System::AnsiString __fastcall GetProperty(System::AnsiString PropertyId);
	virtual bool __fastcall IsActive(void);
	__property int Reserved = {read=FReserved, write=FReserved, nodefault};
	virtual bool __fastcall RestoreProperties(void);
	virtual bool __fastcall SaveProperties(void);
	virtual bool __fastcall SetProperty(System::AnsiString PropertyId, System::AnsiString Value);
	virtual bool __fastcall ShowDialog(void);
	
__published:
	__property System::AnsiString DialogTitle = {read=GetDialogTitle, write=SetDialogTitle};
	__property Forms::TPosition DialogPosition = {read=GetDialogPosition, write=SetDialogPosition, nodefault
		};
	__property bool IdentifyProperties = {read=GetIdentifyProperties, write=SetIdentifyProperties, nodefault
		};
	__property System::AnsiString RegistryKey = {read=GetRegistryKey, write=SetRegistryKey};
	__property TRegistryRoot RegistryRoot = {read=GetRegistryRoot, write=SetRegistryRoot, nodefault};
	__property System::AnsiString RegistrySubKey = {read=GetRegistrySubKey, write=SetRegistrySubKey};
	__property System::AnsiString SelectPages = {read=GetSelectPages, write=SetSelectPages};
	__property System::AnsiString Version = {read=GetVersion, write=SetVersion};
	__property TDialogClosedEvent OnDialogClosed = {read=FOnDialogClosed, write=FOnDialogClosed};
	__property TPropertyPageSaverErrorEvent OnErrorRestoringProperties = {read=FOnErrorRestoringProperties
		, write=FOnErrorRestoringProperties};
	__property TPropertyPageSaverErrorEvent OnErrorSavingProperties = {read=FOnErrorSavingProperties, write=
		FOnErrorSavingProperties};
	__property TPropertyPageSaverErrorEvent OnInterfaceError = {read=FOnInterfaceError, write=FOnInterfaceError
		};
	__property Classes::TNotifyEvent OnInvalidRegistryKey = {read=FOnInvalidRegistryKey, write=FOnInvalidRegistryKey
		};
	__property TNewPropertyValue OnNewPropertyValue = {read=FOnNewPropertyValue, write=FOnNewPropertyValue
		};
	__property Classes::TNotifyEvent OnPropertiesRestored = {read=FOnPropertiesRestored, write=FOnPropertiesRestored
		};
	__property Classes::TNotifyEvent OnPropertiesSaved = {read=FOnPropertiesSaved, write=FOnPropertiesSaved
		};
public:
	/* TWinControl.CreateParented */ __fastcall TPropertyPageSaver(HWND ParentWindow) : Ppsaver::TPropertyPageSaverBase(
		ParentWindow) { }
	
};

//-- var, const, procedure ---------------------------------------------------
extern PACKAGE void __fastcall Register(void);

}	/* namespace Ppsaver */
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using namespace Ppsaver;
#endif
//-- end unit ----------------------------------------------------------------
#endif	// Ppsaver
