Display metodları ile kendi menümüzü yapabiliriz. Tablodaki bir alan üzerinden filtreleme yapabiliriz.
1. Bir display metod ekleyelim. (disCustName) alanına ekleyelim onun üzerinden yapalım. Form adı "IND_BusRelation” formu. formdaki datasource ise “smmBusRelTable”.
2. disCustName bu alanın özelliklerinden property sini değiştirelim. “AutoDeclaration” Yes olacak. (Change “AutoDeclaration” property from No to Yes of the “disCustName” data field.)
3. Bir tane metod yazalım. Var olan metodlardan override edelim. ( Override “context()” method of the “disCustName” data field and add following code.)
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');
int b = menu.insertItem('Filter By Selection');
int c = menu.insertItem('Remove Filter');
;
selectedMenu = menu.draw();
switch (selectedMenu)
{
case -1: //Filter by field
break;
case a:
ag = new args('SysformSearch');
fr = new formrun(ag);
fr.run();
fr.wait();
//Reading User entered value for filter process
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));
qb1.addRange(FieldNum(CustTable,Name)).value(strtext);
smmBusRelTable_ds.query(Q);
smmBusRelTable_ds.executeQuery();
}
break;
case b: // Filter By Selection
q = smmBusRelTable_ds.query();
qb1 = q.dataSourceTable(tablenum(smmBusRelTable));
qb1 = qb1.addDataSource(TableNum(CustTable));
qb1.addLink(FieldNum(smmBusRelTable,CustAccount),FieldNum(CustTable,AccountNum));
qb1.addRange(FieldNum(CustTable,Name)).value(disCustName.valueStr());
smmBusRelTable_ds.query(Q);
smmBusRelTable_ds.executeQuery();
break;
case c : // Remove Filter
q = new Query();
qb1 = q.addDataSource(tablenum(smmBusRelTable));
qb1.clearLinks();
qb1.clearRanges();
smmBusRelTable_ds.query(Q);
smmBusRelTable_ds.removeFilter();
break;
Default:
break;
}
}
4. Formu çalıştıralım. ( Run the form and do right Click on Customer Name field.)