Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

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

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "AdvGrid"
#pragma link "BaseGrid"
#pragma link "DBAdvGrid"
#pragma link "AdvPageControl"
#pragma link "DBAdvNavigator"
#pragma link "AdvPanel"
#pragma resource "*.dfm"

#define TDBADVGRID_FIXED        1
#define INCLUDE_PARENTS         TDBADVGRID_FIXED

TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::buildTransactionSpecificationValueTree( TDBAdvGrid & grid, TADOQuery & query )
{
        grid.BeginUpdate();
        const int currentRow = query.RecNo;
        try
        {
                int children    = 0;
                const int rows  = query.RecordCount;
                for ( int where = 1; where <= rows; ++where )
                {
                        query.RecNo = where;
                        if ( ( children = query.FieldByName( "CHILD_COUNT" )->AsInteger ) > 0 )
                        {
                                grid.AddNode( where, 1 + children );
                        }
                }
        }
        __finally
        {
                grid.ContractAll();
                query.RecNo = currentRow;
                grid.EndUpdate();
        }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::populatePayloadStructureTab( const AnsiString & structure )
{
        AnsiString      sqlStatement;

        PayloadStructureTabSheet->TabVisible = true;
        PayloadStructureTabSheet->Caption = structure;

        TxnValuesQuery->Close();
#if TDBADVGRID_FIXED
        NewPayloadStructureGrid->RemoveAllNodes();
#endif
        sqlStatement.sprintf(
                "SELECT "
                        "XPATH,"
                        "FIELDNAME,"
                        "FIELDVALUE,"
                        "USER_SUPPLIED,"
                        "ORDINAL,"
                        "CHILD_COUNT "
                "FROM "
                        "TXNSPEC_VALUES "
#if !INCLUDE_PARENTS
                "WHERE "
                        "CHILD_COUNT=0 "
#endif
                "ORDER BY "
                        "ORDINAL" );

        TxnValuesQuery->SQL->Text = sqlStatement;
        TxnValuesQuery->Open();

#if TDBADVGRID_FIXED
        buildTransactionSpecificationValueTree( *NewPayloadStructureGrid, *TxnValuesQuery );
#endif
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::FormShow(TObject *Sender)
{
        IntegrationDBConnection->Open( "Admin", "" );

        populatePayloadStructureTab( "TDBAdvGrid Test" );
}
//---------------------------------------------------------------------------