Override the context method of form control of display method. Following is the example of filtering customer name.
public void context()
{
// super();
Int selectedMenu;
real test;
formRun fr;
Args ag;
Name strText;
str custAcc;
CustTable custTable;
Container cust;
FormStringControl fsc;
PopupMenu menu = new PopupMenu(element.hWnd());
int a = menu.insertItem('Filter by field');
int b = menu.insertItem('Filter by selection');
int c = menu.insertItem('Remove filter');
selectedMenu = menu.draw();
switch(selectedMenu)
{
case -1 :
break;
case a :
ag = new args('SysformSearch');
fr = new formrun(ag);
fr.init();
fsc = fr.design().controlName('FindEdit');
fsc.text(customerName.ValueStr());//customerName is display control name
fr.run();
fr.wait();
strText = fsc.valueStr();
while select custTable where custTable.Name like strText
{
cust += custTable.AccountNum;
}
custAcc = con2str(cust);//custTable.AccountNum;
if(fr.closesOk())
AVI_ServiceOrderTable_ds.filter(fieldNum(AVI_ServiceOrderTable,CustAccount),custAcc);
break;
case b:
strText = customerName.valueStr();
select custTable where custTable.Name == strText;
AVI_ServiceOrderTable_ds.filter(fieldNum(AVI_ServiceOrderTable,CustAccount),custTable.AccountNum);
break;
case c:
AVI_ServiceOrderTable_ds.removeFilter();
break;
}
}
public void context()
{
// super();
Int selectedMenu;
real test;
formRun fr;
Args ag;
Name strText;
str custAcc;
CustTable custTable;
Container cust;
FormStringControl fsc;
PopupMenu menu = new PopupMenu(element.hWnd());
int a = menu.insertItem('Filter by field');
int b = menu.insertItem('Filter by selection');
int c = menu.insertItem('Remove filter');
selectedMenu = menu.draw();
switch(selectedMenu)
{
case -1 :
break;
case a :
ag = new args('SysformSearch');
fr = new formrun(ag);
fr.init();
fsc = fr.design().controlName('FindEdit');
fsc.text(customerName.ValueStr());//customerName is display control name
fr.run();
fr.wait();
strText = fsc.valueStr();
while select custTable where custTable.Name like strText
{
cust += custTable.AccountNum;
}
custAcc = con2str(cust);//custTable.AccountNum;
if(fr.closesOk())
AVI_ServiceOrderTable_ds.filter(fieldNum(AVI_ServiceOrderTable,CustAccount),custAcc);
break;
case b:
strText = customerName.valueStr();
select custTable where custTable.Name == strText;
AVI_ServiceOrderTable_ds.filter(fieldNum(AVI_ServiceOrderTable,CustAccount),custTable.AccountNum);
break;
case c:
AVI_ServiceOrderTable_ds.removeFilter();
break;
}
}
No comments:
Post a Comment