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

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

#ifndef asgddHPP
#define asgddHPP

#pragma delphiheader begin
#pragma option push -w-
#pragma option push -Vx
#include <ShlObj.hpp>	// Pascal unit
#include <Forms.hpp>	// Pascal unit
#include <SysUtils.hpp>	// Pascal unit
#include <Controls.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit
#include <StdCtrls.hpp>	// Pascal unit
#include <ActiveX.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 -----------------------------------------------------------
#include <oleidl.h>

namespace Asgdd
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TEnumFormats;
class PASCALIMPLEMENTATION TEnumFormats : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	_di_IDataObject FDataObject;
	_di_IEnumFORMATETC FEnumerator;
	tagFORMATETC FFormatEtc;
	bool FValid;
	int FCount;
	Classes::TStringList* FFiles;
	void __fastcall SetDataObject(_di_IDataObject Value);
	int __fastcall SomeInt(Word Format);
	AnsiString __fastcall SomeText(Word Format);
	bool __fastcall SomeFiles(Classes::TStringList* &Files);
	int __fastcall GetAspect(void);
	void __fastcall SetAspect(int value);
	Word __fastcall GetcfFormat(void);
	void __fastcall SetcfFormat(Word value);
	int __fastcall GetlIndex(void);
	void __fastcall SetlIndex(int value);
	int __fastcall GetTymed(void);
	void __fastcall SetTymed(int value);
	
public:
	__fastcall TEnumFormats(_di_IDataObject DataObject);
	__fastcall virtual ~TEnumFormats(void);
	bool __fastcall Reset(void);
	bool __fastcall Next(void);
	bool __fastcall HasFormat(Word ClipFormat);
	unsigned __fastcall Handle(int Tymed);
	unsigned __fastcall GlobalHandle(void);
	bool __fastcall HasText(void);
	bool __fastcall HasFile(void);
	bool __fastcall HasRTF(void);
	bool __fastcall HasCol(void);
	AnsiString __fastcall Text();
	AnsiString __fastcall RTF();
	int __fastcall Col(void);
	__property int Count = {read=FCount, nodefault};
	__property _di_IDataObject DataObject = {read=FDataObject, write=SetDataObject};
	__property bool Valid = {read=FValid, nodefault};
	__property tagFORMATETC FormatEtc = {read=FFormatEtc};
	__property int Aspect = {read=GetAspect, write=SetAspect, nodefault};
	__property Word Format = {read=GetcfFormat, write=SetcfFormat, nodefault};
	__property int Index = {read=GetlIndex, write=SetlIndex, nodefault};
	__property int Medium = {read=GetTymed, write=SetTymed, nodefault};
};


#pragma option push -b-
enum TDropFormat { dfText, dfFile, dfCol, dfRTF };
#pragma option pop

typedef Set<TDropFormat, dfText, dfRTF>  TDropFormats;

class DELPHICLASS TASGDropTarget;
class PASCALIMPLEMENTATION TASGDropTarget : public System::TInterfacedObject 
{
	typedef System::TInterfacedObject inherited;
	
public:
	HRESULT __stdcall DragEnter(const _di_IDataObject DataObj, int grfKeyState, const Windows::TPoint pt
		, int &dwEffect);
	HRESULT __stdcall DragOver(int grfKeyState, const Windows::TPoint pt, int &dwEffect);
	HRESULT __stdcall DragLeave(void);
	HRESULT __stdcall Drop(const _di_IDataObject DataObj, int grfKeyState, const Windows::TPoint pt, int 
		&dwEffect);
	
private:
	bool FOk;
	bool FAcceptText;
	bool FAcceptFiles;
	bool FAcceptCols;
	TDropFormats FDropFormats;
	
public:
	__fastcall TASGDropTarget(void);
	virtual void __fastcall DropText(const Windows::TPoint &pt, AnsiString s);
	virtual void __fastcall DropCol(const Windows::TPoint &pt, int col);
	virtual void __fastcall DropRTF(const Windows::TPoint &pt, AnsiString s);
	virtual void __fastcall DropFiles(const Windows::TPoint &pt, Classes::TStrings* files);
	virtual void __fastcall DragMouseMove(const Windows::TPoint &pt, bool &Allow, TDropFormats DropFormats
		);
	virtual void __fastcall DragMouseEnter(void);
	virtual void __fastcall DragMouseLeave(void);
	
__published:
	__property bool AcceptText = {read=FAcceptText, write=FAcceptText, nodefault};
	__property bool AcceptFiles = {read=FAcceptFiles, write=FAcceptFiles, nodefault};
	__property bool AcceptCols = {read=FAcceptCols, write=FAcceptCols, nodefault};
	__property TDropFormats DropFormats = {read=FDropFormats, nodefault};
public:
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~TASGDropTarget(void) { }
	#pragma option pop
	
private:
	void *__IDropTarget;	/* IDropTarget */
	
public:
	operator IDropTarget*(void) { return (IDropTarget*)&__IDropTarget; }
	
};


class DELPHICLASS TASGDropSource;
class PASCALIMPLEMENTATION TASGDropSource : public System::TInterfacedObject 
{
	typedef System::TInterfacedObject inherited;
	
private:
	bool fNoAccept;
	
public:
	__fastcall TASGDropSource(void);
	HRESULT __stdcall QueryContinueDrag(BOOL fEscapePressed, int grfKeyState);
	HRESULT __stdcall GiveFeedback(int dwEffect);
	virtual void __fastcall CurrentEffect(int dwEffect);
	virtual void __fastcall QueryDrag(void);
public:
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~TASGDropSource(void) { }
	#pragma option pop
	
private:
	void *__IDropSource;	/* IDropSource */
	
public:
	operator IDropSource*(void) { return (IDropSource*)&__IDropSource; }
	
};


class DELPHICLASS TSourceDataObject;
class PASCALIMPLEMENTATION TSourceDataObject : public System::TInterfacedObject 
{
	typedef System::TInterfacedObject inherited;
	
private:
	AnsiString textdata;
	AnsiString rtfdata;
	int scolidx;
	
public:
	__fastcall TSourceDataObject(const AnsiString stxt, const AnsiString srtf, int sidx);
	HRESULT __stdcall GetData(const tagFORMATETC &formatetc, /* out */ tagSTGMEDIUM &medium);
	HRESULT __stdcall GetDataHere(const tagFORMATETC &formatetc, /* out */ tagSTGMEDIUM &medium);
	HRESULT __stdcall QueryGetData(const tagFORMATETC &formatetc);
	HRESULT __stdcall SetData(const tagFORMATETC &formatetc, tagSTGMEDIUM &medium, BOOL fRelease);
	HRESULT __stdcall GetCanonicalFormatEtc(const tagFORMATETC &formatetcIn, /* out */ tagFORMATETC &formatetcOut
		);
	HRESULT __stdcall EnumFormatEtc(int dwDirection, /* out */ _di_IEnumFORMATETC &enumFormatEtc);
	HRESULT __stdcall DAdvise(const tagFORMATETC &formatetc, int advf, const _di_IAdviseSink advSink, /* out */ 
		int &dwConnection);
	HRESULT __stdcall DUnadvise(int dwConnection);
	HRESULT __stdcall EnumDAdvise(/* out */ _di_IEnumSTATDATA &enumAdvise);
public:
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~TSourceDataObject(void) { }
	#pragma option pop
	
private:
	void *__IDataObject;	/* IDataObject */
	
public:
	operator IDataObject*(void) { return (IDataObject*)&__IDataObject; }
	
};


class DELPHICLASS TSourceEnumFormatEtc;
class PASCALIMPLEMENTATION TSourceEnumFormatEtc : public System::TInterfacedObject 
{
	typedef System::TInterfacedObject inherited;
	
protected:
	int FIndex;
	bool FHasCol;
	
public:
	HRESULT __stdcall Next(int CountRequested, /* out */ void *FormatEtcArray, Windows::PLongint PCountFetched
		);
	HRESULT __stdcall Skip(int count);
	HRESULT __stdcall Reset(void);
	HRESULT __stdcall Clone(/* out */ _di_IEnumFORMATETC &enumFmt);
public:
	#pragma option push -w-inl
	/* TObject.Create */ inline __fastcall TSourceEnumFormatEtc(void) : System::TInterfacedObject() { }
		
	#pragma option pop
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~TSourceEnumFormatEtc(void) { }
	#pragma option pop
	
private:
	void *__IEnumFORMATETC;	/* IEnumFORMATETC */
	
public:
	operator IEnumFORMATETC*(void) { return (IEnumFORMATETC*)&__IEnumFORMATETC; }
	
};


typedef tagFORMATETC TFormatEtcArray[20];

typedef tagFORMATETC *PFormatEtcArray;

//-- var, const, procedure ---------------------------------------------------
static const Shortint deNone = 0x0;
static const Shortint deMove = 0x2;
static const Shortint deCopy = 0x1;
static const Shortint deLink = 0x4;
static const unsigned deScroll = 0x80000000;
static const Shortint ddGet = 0x1;
static const Shortint ddSet = 0x2;
static const Shortint tsGlobal = 0x1;
static const Shortint tsFile = 0x2;
static const Shortint tsStream = 0x4;
static const Shortint tsStorage = 0x8;
static const Shortint tsGDI = 0x10;
static const Shortint tsMetafilePict = 0x20;
static const Shortint tsEnhMetafile = 0x40;
static const Shortint tsNull = 0x0;
extern PACKAGE void __fastcall SetRTFAware(bool value);
extern PACKAGE int __fastcall StandardEffect(Classes::TShiftState Keys);
extern PACKAGE HRESULT __fastcall StartTextDoDragDrop(TASGDropSource* DropSource, AnsiString stxt, AnsiString 
	srtf, int dwOKEffects, int &dwEffect);
extern PACKAGE HRESULT __fastcall StartColDoDragDrop(TASGDropSource* DropSource, int column, int dwOKEffects
	, int &dwEffect);

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

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