2011-07-28

Progress Bar - Multi Bar

Program di bawah merupakan contoh progress bar deng tipe multi bar. Tipe ini juga bisa digunakan untuk single bar dengan jumlah array 1. Dalam contoh, bar kedua menggunakan nilai dari bar pertama. Bar kedua dapat disesuaikan dengan kebutuhan misalnya detail/transaksi dari suatu tabel utama (CustInvoiceJour - CustInvoiceTrans).

Progress Bar
static void myProgressBar(Args _args)
{
    CustInvoiceJour         custInvoiceJour;
    Query                   q;
    QueryBuildDataSource    qbds;
    QueryRun                qr;
    SysOperationProgress    progressBar;
    int                     totalRow, counter;
    #aviFiles
    ;

    q = new Query();
    qbds = q.addDataSource(tablenum(CustInvoiceJour));

    qr = new QueryRun(q);

    totalRow = SysQuery::countTotal(qr);// Mengambil Total/Jumlah record dari query
    progressBar = SysOperationProgress::newMultiBar(2,#aviUpdate,"Progress");
    progressBar.setTotal(totalRow,1);
    progressBar.setTotal(totalRow,2);

    while(qr.next())
    {
        custInvoiceJour = qr.get(tablenum(CustInvoiceJour));
        counter++;

        progressBar.setCount(counter,1);
        progressBar.setText(strfmt("Record Processed 1: %1 - %2", counter, custInvoiceJour.InvoiceId),1);

        progressBar.setCount(counter,2);
        progressBar.setText(strfmt("Record Processed 2: %1 - %2", counter, custInvoiceJour.InvoiceId),2);
    }
    progressBar.kill();
}