#ifndef OverbyteIcsWmiTst1H
#define OverbyteIcsWmiTst1H

#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.ComCtrls.hpp>
#include <Vcl.Grids.hpp>

#include "OverbyteIcsWmi.hpp"
#include "OverbyteIcsUtils.hpp"
#include "OverbyteIcsIniFiles.hpp"
#include "OverbyteIcsTypes.hpp"

class TWmiDemoForm : public TForm
{
__published:
    TPanel *PanelTop;
    TPanel *PanelLogins;
    TLabel *Label1;
    TLabel *Label3;
    TLabel *Label9;
    TEdit *NetComputer;
    TEdit *NetUserName;
    TEdit *NetPassword;
    TButton *doExit2;
    TPageControl *PageControl;
    TTabSheet *TabSheetWmi;
    TListView *WmiListView;
    TPanel *PanelWmi;
    TLabel *Label5;
    TLabel *Label2;
    TLabel *LabelStatus;
    TLabel *Label6;
    TComboBox *WmiClass;
    TButton *doGetClass;
    TComboBox *WmiNamespace;
    TButton *doGetOneProp;
    TComboBox *WmiCommand;
    TComboBox *WmiOneProp;
    TCheckBox *WmiLogOutput;
    TTabSheet *TabSheetNetwork;
    TPanel *Panel2;
    TLabel *Label15;
    TLabel *Label4;
    TButton *doRenameComp;
    TEdit *NewCompName;
    TButton *doReboot;
    TButton *doCloseDown;
    TTabSheet *TabSheet1;
    TGroupBox *GroupBoxAddr;
    TLabel *Label11;
    TButton *doGetAdaptors;
    TListView *ListNetAdaptors;
    TButton *doGetAddresses;
    TButton *doSetAddresses;
    TCheckBox *NetUseDhcp;
    TStringGrid *ListNetIPs;
    TStringGrid *ListNetGateways;
    TTabSheet *TabSheet2;
    TGroupBox *GroupBoxDns;
    TLabel *Label13;
    TLabel *LabelDnsStatus;
    TButton *doListZones;
    TButton *doListRecs;
    TListView *ListZones;
    TListView *ListRecords;
    TGroupBox *GroupBoxNewRec;
    TLabel *Label7;
    TLabel *Label8;
    TLabel *Label10;
    TLabel *LabelDnsZone;
    TComboBox *DnsRecType;
    TEdit *DnsRecName;
    TEdit *DnsRecData;
    TButton *doDnsRecUpd;
    TButton *doDnsRecAdd;
    TButton *doDnsRecDel;
    TEdit *DnsRecZone;
    TButton *doCheckDnsSrv;
    TMemo *LogWin;
    void __fastcall doGetClassClick(TObject *Sender);
    void __fastcall doExitClick(TObject *Sender);
    void __fastcall doGetOnePropClick(TObject *Sender);
    void __fastcall LogWinDblClick(TObject *Sender);
    void __fastcall doCloseDownClick(TObject *Sender);
    void __fastcall doRebootClick(TObject *Sender);
    void __fastcall doRenameCompClick(TObject *Sender);
    void __fastcall doListZonesClick(TObject *Sender);
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall doGetAdaptorsClick(TObject *Sender);
    void __fastcall doGetAddressesClick(TObject *Sender);
    void __fastcall ListNetAdaptorsDblClick(TObject *Sender);
    void __fastcall doSetAddressesClick(TObject *Sender);
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
    void __fastcall doListRecsClick(TObject *Sender);
    void __fastcall ListZonesDblClick(TObject *Sender);
    void __fastcall doDnsUpdateRec(TObject *Sender);
    void __fastcall ListRecordsDblClick(TObject *Sender);
    void __fastcall doCheckDnsSrvClick(TObject *Sender);
    void __fastcall ListRecordsClick(TObject *Sender);
    void __fastcall DnsRecDataDblClick(TObject *Sender);

private:
    int FAdptNr = -1;
    String FAdptName;

    bool Confirm(const String &Text, const String &Title);
    void SetDnsRecButtons(bool Enable);

public:
    __fastcall TWmiDemoForm(TComponent *Owner);
    void AddLog(const String &S);
    void ClearGrid(TStringGrid *MyGrid);
};

extern PACKAGE TWmiDemoForm *WmiDemoForm;

#endif
