Насколько я понимаю, столбец ProductName отображается с помощью методов отображения. По крайней мере, для моей реализации здесь, и этот метод находится в таблице InventSum:
display public ItemNameDisplay itemName()
{
// Fields might not have been selected on the specified buffers, or might have been updated since selection
this.checkInvalidFieldAccess(false);
if (this.InventDimId)
{
return this.inventTable().itemName(InventDim::find(this.InventDimId));
}
return this.inventTable().itemName();
}
Когда я нажимаю Ctrl + G и пытаюсь отфильтровать данные, эта опция отключается для указанного выше столбца, и я думаю, что это происходит из-за этого метода отображения. Есть ли способ добиться этой функциональности?
Должен ли я попытаться (щелкнув правой кнопкой мыши) добавить туда еще один элемент меню и выполнить фильтрацию с помощью нового диалогового окна (где я запишу имя элемента), как-то с последующим обновлением формы?
Обновление 1:
Я нашел и отредактировал этот подход для своего особого случая:
public void context()
{
InventTable inventTable;
int selectedMenu;
real test;
formrun fr;
Args ag;
Itemname strtext;
querybuilddataSource qb1;
queryrun qr;
query q;
PopupMenu menu = new PopupMenu(element.hWnd());
int a = menu.insertItem('Find');
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.run();
fr.wait();
strtext = fr.design().controlName('FindEdit').valueStr();
if(strtext)
{
select ItemId from inventTable
where inventTable.NameAlias == strtext;
InventSum_DS.filter(FieldNum(InventSum,ItemId),Sysquery::value(inventTable.ItemId));
}
break;
case c :
InventSum_DS.removeFilter();
break;
Default:
break;
}
}
Тем не менее, я думаю, что это неправильный способ просто отображать новое PopupMenu. Хотелось бы подключиться к обычному меню и тут же добавить новый фильтр «Найти и удалить». И ... удаление фильтра занимает некоторое время, я должен каким-то образом сигнализировать об этом, чтобы пользователь не паниковал.