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

// (DO NOT EDIT: machine generated header) 'Inspector.pas' rev: 22.00

#ifndef InspectorHPP
#define InspectorHPP

#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 <Controls.hpp>	// Pascal unit
#include <Forms.hpp>	// Pascal unit
#include <Dialogs.hpp>	// Pascal unit
#include <ExtCtrls.hpp>	// Pascal unit
#include <StdCtrls.hpp>	// Pascal unit
#include <Buttons.hpp>	// Pascal unit
#include <popuplb.hpp>	// Pascal unit
#include <Registry.hpp>	// Pascal unit
#include <AnyDialogs.hpp>	// Pascal unit
#include <ComCtrls.hpp>	// Pascal unit
#include <FlatSB.hpp>	// Pascal unit
#include <Grids.hpp>	// Pascal unit
#include <AnyGrids.hpp>	// Pascal unit
#include <Types.hpp>	// Pascal unit

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

namespace Inspector
{
//-- type declarations -------------------------------------------------------
#pragma option push -b-
enum TSetsState { ssOpen, ssClose };
#pragma option pop

#pragma option push -b-
enum TDataType { dtString, dtInteger, dtFloat, dtBoolean, dtColor, dtEnum, dtHasEditor, dtSize, dtOneObject, dtSets };
#pragma option pop

typedef System::Set<TDataType, TDataType::dtString, TDataType::dtSets>  TDataTypes;

typedef void __fastcall (__closure *TModifyEvent)(int Item);

typedef void __fastcall (__closure *TGetObjectsEvent)(Classes::TStrings* List);

typedef void __fastcall (__closure *TSelectionChangedEvent)(System::AnsiString ObjName);

typedef void __fastcall (__closure *TClickSetsPropEvent)(System::TObject* Sender, int Index, const System::AnsiString Caption, TSetsState &CurrState);

class DELPHICLASS TProp;
class PASCALIMPLEMENTATION TProp : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	void __fastcall SetValue(const System::Variant &Value);
	System::Variant __fastcall GetValue(void);
	bool __fastcall IsEnumNull(void);
	
public:
	System::WideString Text;
	TDataTypes DataType;
	Classes::TNotifyEvent Editor;
	Classes::TStringList* Enum;
	System::Variant EnumValues;
	TSetsState State;
	System::Variant DefaultVal;
	__fastcall virtual TProp(const System::Variant &PropValue, TDataTypes PropType, Classes::TStringList* PropEnum, const System::Variant &PropEnumValues, Classes::TNotifyEvent PropEditor, const System::Variant &DefaultValue, TSetsState SetsState);
	__fastcall virtual ~TProp(void);
	__property System::Variant Value = {read=GetValue, write=SetValue};
};


typedef void __fastcall (__closure *TDrawValueEvent)(System::TObject* Sender, Graphics::TCanvas* Canvas, System::AnsiString PropName, TProp* P, const Types::TRect &Rect, int &DrawWidth);

typedef void __fastcall (__closure *TDrawEnumItemEvent)(System::TObject* Sender, Graphics::TCanvas* Canvas, System::AnsiString PropName, TProp* P, int Index, bool Focused, const Types::TRect &Rect, int &DrawWidth);

typedef void __fastcall (__closure *TGetItemHeightWidth)(System::TObject* Sender, System::AnsiString PropName, int &ItemHeight, int &ItemWidth);

class DELPHICLASS TPaintBox;
class PASCALIMPLEMENTATION TPaintBox : public Controls::TCustomControl
{
	typedef Controls::TCustomControl inherited;
	
private:
	Classes::TNotifyEvent FOnPaint;
	
protected:
	virtual void __fastcall Paint(void);
	__property Classes::TNotifyEvent OnPaint = {read=FOnPaint, write=FOnPaint};
	
public:
	__fastcall virtual TPaintBox(Classes::TComponent* AOwner);
public:
	/* TCustomControl.Destroy */ inline __fastcall virtual ~TPaintBox(void) { }
	
public:
	/* TWinControl.CreateParented */ inline __fastcall TPaintBox(HWND ParentWindow) : Controls::TCustomControl(ParentWindow) { }
	
};


class DELPHICLASS TEditex;
class DELPHICLASS TInspector;
class PASCALIMPLEMENTATION TEditex : public Stdctrls::TEdit
{
	typedef Stdctrls::TEdit inherited;
	
private:
	TInspector* FOwner;
	System::WideString FOldText;
	MESSAGE void __fastcall CMCancelMode(Controls::TCMCancelMode &Msg);
	HIDESBASE MESSAGE void __fastcall WMKillFocus(Messages::TWMKillFocus &Message);
public:
	/* TCustomEdit.Create */ inline __fastcall virtual TEditex(Classes::TComponent* AOwner) : Stdctrls::TEdit(AOwner) { }
	
public:
	/* TWinControl.CreateParented */ inline __fastcall TEditex(HWND ParentWindow) : Stdctrls::TEdit(ParentWindow) { }
	/* TWinControl.Destroy */ inline __fastcall virtual ~TEditex(void) { }
	
};


class PASCALIMPLEMENTATION TInspector : public Controls::TCustomControl
{
	typedef Controls::TCustomControl inherited;
	
private:
	TEditex* Edit1;
	Extctrls::TPanel* EditPanel;
	Buttons::TSpeedButton* EditBtn;
	Extctrls::TPanel* ComboPanel;
	Buttons::TSpeedButton* ComboBtn;
	Classes::TStringList* FItems;
	Classes::TStringList* FDisplayItems;
	int FItemIndex;
	TModifyEvent FOnModify;
	int FRowHeight;
	bool FShowCelling;
	bool FCreating;
	bool FShowH;
	bool FUpdateScroll;
	int w1;
	bool BusyFlag;
	bool BusyFlag1;
	int DefHeight;
	Popuplb::TPopupListBox* LB1;
	unsigned FTickCount;
	Classes::TNotifyEvent FOnHeightChanged;
	TGetObjectsEvent FOnGetObjects;
	TSelectionChangedEvent FOnSelectionChanged;
	bool FDown;
	System::AnsiString LastProp;
	System::TObject* CurObject;
	Graphics::TBitmap* bmpExpand;
	Graphics::TBitmap* bmpClose;
	int FUpdateCount;
	int FTopIndex;
	int FBottomIndex;
	int FTopOff;
	Graphics::TBitmap* FLineBmp;
	Graphics::TBitmap* bmpLine;
	TClickSetsPropEvent FOnClickSetsPropEvent;
	TDrawValueEvent FOnDrawValue;
	TDrawEnumItemEvent FOnDrawEnumItem;
	TGetItemHeightWidth FOnEnumItemHeightWidth;
	bool FUpdating;
	void __fastcall OnEdit1Exit(System::TObject* Sender);
	void __fastcall Edit1KeyDown(System::TObject* Sender, System::Word &Key, Classes::TShiftState Shift);
	void __fastcall Edit1DblClick(System::TObject* Sender);
	void __fastcall Edit1KeyPress(System::TObject* Sender, System::WideChar &Key);
	void __fastcall Edit1MouseDown(System::TObject* Sender, Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
	void __fastcall EditBtnClick(System::TObject* Sender);
	void __fastcall ComboBtnClick(System::TObject* Sender);
	void __fastcall ComboBtnMouseDown(System::TObject* Sender, Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
	TProp* __fastcall CurItem(void);
	int __fastcall GetCount(void);
	void __fastcall SetItemValue(System::WideString Value);
	void __fastcall SetItemIndex(int Value);
	System::WideString __fastcall GetItemValue(int i);
	void __fastcall SetItems(const Classes::TStringList* Value);
	void __fastcall DrawOneLine(int i, bool a);
	void __fastcall MouseWheelDown(System::TObject* Sender, Classes::TShiftState Shift, const Types::TPoint &MousePos, bool &Handled);
	void __fastcall MouseWheelUp(System::TObject* Sender, Classes::TShiftState Shift, const Types::TPoint &MousePos, bool &Handled);
	MESSAGE void __fastcall CMDeactivate(Messages::TWMNoParams &Message);
	MESSAGE void __fastcall CMActivate(Messages::TWMNoParams &Message);
	HIDESBASE MESSAGE void __fastcall CMShowingChanged(Messages::TMessage &Message);
	HIDESBASE MESSAGE void __fastcall WMSize(Messages::TWMSize &Msg);
	HIDESBASE MESSAGE void __fastcall WMVScroll(Messages::TWMScroll &Msg);
	void __fastcall UpdateLoc(Controls::TWinControl* Control, int ALeft, int ATop, int AWidth, int AHeight);
	void __fastcall LB1Click(System::TObject* Sender);
	System::Variant __fastcall GetPropValue(int Index);
	void __fastcall SetPropValue(int Index, const System::Variant &Value);
	System::Variant __fastcall GetPropValueByName(System::AnsiString AName);
	void __fastcall SetPropValueByName(System::AnsiString AName, const System::Variant &Value);
	void __fastcall UpdateScrollRange(void);
	void __fastcall SetPosition(int Value, Forms::TScrollBarKind FKind);
	int __fastcall GetRang(Forms::TScrollBarKind FKind);
	int __fastcall Position(Forms::TScrollBarKind FKind);
	void __fastcall CalViewRegion(void);
	bool __fastcall ScrollMessage(Messages::TWMScroll &Msg);
	void __fastcall ClickNote(void);
	
protected:
	DYNAMIC void __fastcall Resize(void);
	DYNAMIC bool __fastcall DoMouseWheelDown(Classes::TShiftState Shift, const Types::TPoint &MousePos);
	DYNAMIC bool __fastcall DoMouseWheelUp(Classes::TShiftState Shift, const Types::TPoint &MousePos);
	virtual void __fastcall CreateParams(Controls::TCreateParams &Params);
	virtual void __fastcall Paint(void);
	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);
	DYNAMIC void __fastcall DblClick(void);
	
public:
	bool HideProperties;
	__fastcall virtual TInspector(Classes::TComponent* AOwner);
	__fastcall virtual ~TInspector(void);
	void __fastcall ItemsChanged(void);
	void __fastcall Grow(void);
	void __fastcall BeginUpdate(void);
	void __fastcall EndUpdate(void);
	void __fastcall Deactivate(void);
	void __fastcall RemoveItem(int Index);
	void __fastcall InsertProperty(int Index, System::AnsiString PropName, const System::Variant &PropValue, TDataTypes PropType, Classes::TStringList* PropEnum, const System::Variant &PropEnumValues, Classes::TNotifyEvent PropEditor, const System::Variant &DefaultValue, TSetsState SetsState = (TSetsState)(0x0), System::AnsiString DisplayText = "");
	void __fastcall ClearProperties(void);
	void __fastcall AddProperty(System::AnsiString PropName, const System::Variant &PropValue, TDataTypes PropType, Classes::TStringList* PropEnum, const System::Variant &PropEnumValues, Classes::TNotifyEvent PropEditor, const System::Variant &DefaultValue, TSetsState SetsState = (TSetsState)(0x0), System::AnsiString DisplayText = "");
	__property System::Variant PropValue[int Index] = {read=GetPropValue, write=SetPropValue};
	__property System::Variant PropValueByName[System::AnsiString AName] = {read=GetPropValueByName, write=SetPropValueByName};
	__property int Count = {read=GetCount, nodefault};
	__property Classes::TStringList* Items = {read=FItems, write=SetItems};
	__property int ItemIndex = {read=FItemIndex, write=SetItemIndex, nodefault};
	__property int SplitterPos = {read=w1, write=w1, nodefault};
	__property TModifyEvent OnModify = {read=FOnModify, write=FOnModify};
	__property Classes::TNotifyEvent OnHeightChanged = {read=FOnHeightChanged, write=FOnHeightChanged};
	__property TGetObjectsEvent OnGetObjects = {read=FOnGetObjects, write=FOnGetObjects};
	__property TSelectionChangedEvent OnSelectionChanged = {read=FOnSelectionChanged, write=FOnSelectionChanged};
	__property TClickSetsPropEvent OnClickSetsPropEvent = {read=FOnClickSetsPropEvent, write=FOnClickSetsPropEvent};
	__property TDrawValueEvent OnDrawValue = {read=FOnDrawValue, write=FOnDrawValue};
	__property TDrawEnumItemEvent OnDrawEnumItem = {read=FOnDrawEnumItem, write=FOnDrawEnumItem};
	__property TGetItemHeightWidth OnEnumItemHeightWidth = {read=FOnEnumItemHeightWidth, write=FOnEnumItemHeightWidth};
public:
	/* TWinControl.CreateParented */ inline __fastcall TInspector(HWND ParentWindow) : Controls::TCustomControl(ParentWindow) { }
	
};


typedef System::StaticArray<System::AnsiString, 42> Inspector__5;

//-- var, const, procedure ---------------------------------------------------
extern PACKAGE System::StaticArray<Graphics::TColor, 42> InspColors;
extern PACKAGE Inspector__5 InspColorNames;

}	/* namespace Inspector */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE)
using namespace Inspector;
#endif
#pragma pack(pop)
#pragma option pop

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