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

// (DO NOT EDIT: machine generated header) 'AHMTDiskMonitor.pas' rev: 5.00

#ifndef AHMTDiskMonitorHPP
#define AHMTDiskMonitorHPP

#pragma delphiheader begin
#pragma option push -w-
#pragma option push -Vx
#include <AHMSystemConst.hpp>	// Pascal unit
#include <AHMSystemClass.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 Ahmtdiskmonitor
{
//-- type declarations -------------------------------------------------------
#pragma option push -b-
enum TAHMMonitorType { monFiles, monDirectories, monAttributes, monSize, monLastWrite, monSecurity }
	;
#pragma option pop

typedef Set<TAHMMonitorType, monFiles, monSecurity>  TAHMMonitorSet;

class DELPHICLASS TAHMChangeThread;
class DELPHICLASS TAHMDiskLocation;
class DELPHICLASS TAHMDiskMonitor;
class DELPHICLASS TAHMDiskLocations;
class PASCALIMPLEMENTATION TAHMDiskLocations : public Classes::TCollection 
{
	typedef Classes::TCollection inherited;
	
private:
	TAHMDiskMonitor* FAHMDiskMonitor;
	TAHMDiskLocation* __fastcall GetAHMDiskLocation(int Index);
	void __fastcall SetAHMDiskLocation(int Index, TAHMDiskLocation* Value);
	
protected:
	DYNAMIC Classes::TPersistent* __fastcall GetOwner(void);
	
public:
	__fastcall TAHMDiskLocations(TAHMDiskMonitor* AOwner);
	HIDESBASE TAHMDiskLocation* __fastcall Add(void);
	HIDESBASE bool __fastcall Delete(int Index);
	__property TAHMDiskMonitor* Owner = {read=FAHMDiskMonitor};
	__property TAHMDiskLocation* Items[int Index] = {read=GetAHMDiskLocation, write=SetAHMDiskLocation/*
		, default*/};
public:
	#pragma option push -w-inl
	/* TCollection.Destroy */ inline __fastcall virtual ~TAHMDiskLocations(void) { }
	#pragma option pop
	
};


class PASCALIMPLEMENTATION TAHMDiskMonitor : public Ahmsystemclass::TAHMSystemsComponent 
{
	typedef Ahmsystemclass::TAHMSystemsComponent inherited;
	
private:
	TAHMDiskLocations* FAHMDiskLocations;
	void __fastcall SetAHMDiskLocations(TAHMDiskLocations* Value);
	
public:
	__fastcall virtual TAHMDiskMonitor(Classes::TComponent* AOwner);
	__fastcall virtual ~TAHMDiskMonitor(void);
	
__published:
	__property TAHMDiskLocations* Locations = {read=FAHMDiskLocations, write=SetAHMDiskLocations};
};


class PASCALIMPLEMENTATION TAHMDiskLocation : public Classes::TCollectionItem 
{
	typedef Classes::TCollectionItem inherited;
	
private:
	bool FEnabled;
	unsigned FMonType;
	TAHMChangeThread* FChangeThread;
	Classes::TThreadPriority FThreadPriority;
	TAHMDiskMonitor* FAHMDiskMonitor;
	Classes::TNotifyEvent FOnChangeOccured;
	AnsiString FLocation;
	TAHMMonitorSet FEvents;
	bool FSubDirectory;
	void __fastcall SetEnabled(const bool Value);
	void __fastcall SetThreadPriority(const Classes::TThreadPriority Value);
	void __fastcall SetLocation(const AnsiString Value);
	void __fastcall SetEvents(const TAHMMonitorSet Value);
	void __fastcall SetSubDirectory(const bool Value);
	
protected:
	virtual AnsiString __fastcall GetDisplayName();
	void __fastcall UpdateTimer(void);
	
public:
	__fastcall virtual TAHMDiskLocation(Classes::TCollection* Collection);
	virtual void __fastcall Assign(Classes::TPersistent* Source);
	__property TAHMDiskMonitor* Owner = {read=FAHMDiskMonitor};
	__property AnsiString DisplayName = {read=GetDisplayName};
	__fastcall virtual ~TAHMDiskLocation(void);
	
__published:
	__property Classes::TNotifyEvent OnChangeOccured = {read=FOnChangeOccured, write=FOnChangeOccured};
		
	__property AnsiString Location = {read=FLocation, write=SetLocation};
	__property bool Enabled = {read=FEnabled, write=SetEnabled, default=1};
	__property TAHMMonitorSet Events = {read=FEvents, write=SetEvents, default=0};
	__property bool SubDirectory = {read=FSubDirectory, write=SetSubDirectory, default=0};
	__property Classes::TThreadPriority Priority = {read=FThreadPriority, write=SetThreadPriority, default=3
		};
};


class PASCALIMPLEMENTATION TAHMChangeThread : public Classes::TThread 
{
	typedef Classes::TThread inherited;
	
public:
	TAHMDiskLocation* OwnerTimer;
	virtual void __fastcall Execute(void);
	void __fastcall DoTimer(void);
public:
	#pragma option push -w-inl
	/* TThread.Create */ inline __fastcall TAHMChangeThread(bool CreateSuspended) : Classes::TThread(CreateSuspended
		) { }
	#pragma option pop
	#pragma option push -w-inl
	/* TThread.Destroy */ inline __fastcall virtual ~TAHMChangeThread(void) { }
	#pragma option pop
	
};


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

}	/* namespace Ahmtdiskmonitor */
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using namespace Ahmtdiskmonitor;
#endif
#pragma option pop	// -w-
#pragma option pop	// -Vx

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