Динамические Lookup формы.
Допустим, необходимо создать Lookup форму, вид которой и выводимые в ней данные зависели бы от внешних динамических факторов. Например, в Lookup форме должны выводится данные таблицы, выбранные определенным условием, параметры которого задает пользователь в основной форме.
Для этого в MorphX существует возможность создавать Lookup формы программным способом. За функционирование Lookup формы отвечает метод lookup(). Его необходимо переопределить и вписать следующий код:
X++:
void lookup()
{
QueryBuildDataSource queryBuildDataSource;
QueryBuildRange queryBuildRange;
SysTableLookup sysTableLookup;
TableId tableId;
FieldId fieldId, fieldId1, fieldId2;
Query query = new Query();
sysTableLookup = new SysTableLookup();
tableId = tablename2id('HB_AClassTable'); // присваивается id таблице
sysTableLookup.parmTableId(tableId); // задается таблица, для Lookup формы
fieldId = fieldname2id(tableId, 'Name'); /*
sysTableLookup.addLookupfield(fieldId); присваиваются id полям и
fieldId1 = fieldname2id(tableId, 'Code');
sysTableLookup.addLookupfield(fieldId1); помещаются в Lookup форму
fieldId2 = fieldname2id(tableId, 'TypeId'); */
sysTableLookup.addLookupfield(fieldId2);
queryBuildDataSource = query.addDataSource(tableId);
queryBuildDataSource.addrange(fieldId2).value( queryvalue(cTypeCode));
// определяется условие выбора данных из таблицы. cTypeCode – параметр
sysTableLookup.parmQuery(query);
this.performFormLookup(sysTableLookup.formRun());// активизация Lookup формы.
}
Очевидно, что параметром может быть не только условие выбора данных, но и поля таблицы, и сама таблица. В силу своей простоты, такой способ создания Look up формы не позволяет поместить в нее, например, кнопку или какой-нибудь другой control(см. обучающий проект HB_Tutorial_Lookup ), но значительно расширяет ее Look up формы по сравнению со стандартной.