Monday, February 17, 2014

Creating context (Right-click) menu for display field

Creating right click filter options for display field disCustName (Customer Name)

Add the override method 'Context' for the name field

public void context()
{
    int             selectedMenu;
    formrun         fr;
    Args            ag;
    Name            strtext;
    querybuilddataSource qb1;
    queryrun    qr;
    query       q;
    PopupMenu menu = new PopupMenu(element.hWnd());
    int a = menu.insertItem('Filter By Field'); //2
    int b = menu.insertItem('Filter By Selection'); //3
    int c = menu.insertItem('Remove Filter'); //4
    ;

    selectedMenu = menu.draw();
    print selectedMenu;pause;
    switch (selectedMenu)
    {
    case -1: //Filter by field
            break;
    case 2:
            ag = new args('SysformSearch');
            fr = new formrun(ag);
            fr.run();
            fr.wait();
//Reading User entered value for filter process
            strtext = '';
            strtext = fr.design().controlName('FindEdit').valueStr();

            if(strtext)
            {
//Creating a query for filter
                q   = smmBusRelTable_ds.query();
                qb1 = q.dataSourceTable(tablenum(smmBusRelTable));
                qb1 = qb1.addDataSource(TableNum(CustTable));
                qb1.addLink(FieldNum(smmBusRelTable,CustAccount),FieldNum(CustTable,AccountNum));
                //strtext = strreplace(disCustName.text(),',','*');
                info(strtext);
                qb1.addRange(FieldNum(CustTable,Name)).value(strtext);
                smmBusRelTable_ds.query(Q);
                info(qb1.toString());
                smmBusRelTable_ds.executeQuery();
            }
            break;

    case 3:   // Filter By Selection
         
            q   = smmBusRelTable_ds.query();
            qb1 = q.dataSourceTable(tablenum(smmBusRelTable));
            //qb1.clearRanges();
            qb1 = qb1.addDataSource(TableNum(CustTable));
            qb1.addLink(FieldNum(smmBusRelTable,CustAccount),FieldNum(CustTable,AccountNum));
            //info(disCustName.text());
            strtext = strreplace(disCustName.text(),',','*');
            qb1.addRange(FieldNum(CustTable,Name)).value(strtext);
            smmBusRelTable_ds.query(Q);
            info(qb1.toString());
            //qr = new queryrun(smmBusRelTable_ds.query());
            smmBusRelTable_ds.executeQuery();
            break;
    case 4 :   // Remove Filter
            q   = new Query();
            qb1 = q.addDataSource(tablenum(smmBusRelTable));
            qb1.clearLinks();
            qb1.clearRanges();
            smmBusRelTable_ds.query(Q);
            smmBusRelTable_ds.removeFilter();
            break;

    Default:
            break;
    }

}

No comments:

Post a Comment