//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ImgList.hpp>
#include <Menus.hpp>

struct TTreeItemData;

//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
        TTreeView *ShellTree;
        TPageControl *PageControl1;
        TImageList *ImageList1;
        TTabSheet *TabSheet1;
        TListView *NamesList;
        TLabel *Label1;
        TLabel *Label2;
        TImageList *ImageListSeverity;
        TListView *NotesList;
        TListBox *AttributesListBox;
        TLabel *Label3;
        TTabSheet *TabSheet2;
        TLabel *Label4;
        TTreeView *PIDLTree;
        TListView *PIDLDump;
        TTabSheet *TabSheet3;
        TTreeView *InterfacesTree;
        TLabel *Label5;
        TListBox *ObjInterfacesList;
        TLabel *Label6;
        TButton *ActionButton;
        TTabSheet *TabSheet4;
        TListView *DetailsList;
        TLabel *Label7;
        TTreeView *ColumnDetails;
        TPopupMenu *ContextPopup;
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall ShellTreeClick(TObject *Sender);
        void __fastcall ShellTreeExpanding(TObject *Sender,
          TTreeNode *Node, bool &AllowExpansion);
        void __fastcall ShellTreeCollapsing(TObject *Sender,
          TTreeNode *Node, bool &AllowCollapse);
        void __fastcall PIDLTreeClick(TObject *Sender);
        void __fastcall InterfacesTreeClick(TObject *Sender);
        void __fastcall ActionButtonClick(TObject *Sender);
        void __fastcall DetailsListClick(TObject *Sender);
private:	// User declarations
        void AddName(TTreeItemData *pData, UINT shgno, const char *shgnoName);
        void TForm1::DumpDetails(TTreeItemData *pData);
        void CheckInterfaces(TTreeItemData *pData);
        void QueryInterfaces(IUnknown *unk);
public:		// User declarations
        __fastcall TForm1(TComponent* Owner);
};

void PIDLTreeOnSelect(TTreeNode *node, TListView *dump);

//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
