Показать сообщение отдельно
Старый 07.12.2001, 07:07   #1  
Андрей Василюк is offline
Андрей Василюк
Участник
 
6 / 10 (1) +
Регистрация: 23.11.2001
Адрес: Moscow
Динамические Lookup формы.
Динамические 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 формы по сравнению со стандартной.