|
27.11.2001, 17:01 | #1 |
Administrator
|
Создание Lookup формы
В качестве Lookup формы может выступать любая форма Axapta. Внедрение Lookup формы Существует два пути внедрения Lookup формы. Внедрение в качестве FormHelp для Extended Data Type. Если указать название формы в поле Form Help у Extended Data Type, во всех таблицах, где выполняется lookup по полю этого типа, будет использоваться указанная lookup форма. Внедрение непосредственно в Grid в методе lookup выбранного столбца. Метод lookup вызывается при нажатии на lookup-кнопку. Его метод super открывает стандартную lookup форму (grid с выбранными столбцами). Для использования другой формы следует вместо вызова метода super добавить вызов метода performFormLookup объекта, который осуществил вызов метода (то есть this.performFormLookup). В качестве параметра этому методу передаются объект типа FormRun, поэтому перед его вызовом необходимо создать форму, которая будет использоваться для lookup. Полный текст метода lookup может быть, например, таким: X++: void Lookup() { FormRun FR = New FormRun(New Args("ColorLookup")); FR.Init(); this.PerformFormLookup(FR); } Во-первых, следует изменить значение свойства Frame формы на Border или None, чтобы при ее вызове не появлялся заголовок. Форма должна закрываться методом CloseSelect(str). В качестве строки этому методу передается значение, которое будет результатом lookup. PerformFormLookup вызывает метод SelectMode у формы, переданной ему в качестве параметра. Этот метод переводит форму в SelectMode. SelectMode можно вызвать и самостоятельно. В качестве параметра следует передать FormControl. В этом случае можно не закрывать форму с помощью CloseSelect, а результат будет взят из поля value указанного Control. Форма, вызванная методом PerformFormLookup, закрывается автоматически при переводе фокуса. Эту проблему можно решить, например, используя дополнительный флаг, сообщающий о том, что выбор сделан. Теперь вызывать метод super у closeSelect следует только в том случае, когда флаг установлен. Пример смотрите в форме HB_Tutorial_CustomLookup. Изменение lookup-пиктограммы При использовании Extended Data Type появляется возможность изменять для полей этого типа lookup-пиктограмму, изображенную на кнопке, нажатие на которую вызывает lookup. Это делается изменением значения поля ButtonImage у Extended Data Type. Возможные значения: Arrow (по умолчанию), Mail, URL, Three Dots, Open File и Calendar. Использование группы полей AutoLookup для создания Lookup формы Стандартная Lookup форма вызывается, когда определен relation в таблице. Пусть Table1 и Table2 связаны relation Table2.ID == Table1.ID. В формах, использующих значение Table2.ID появиться возможность использовать стандартную Lookup форму. По умолчанию она будет состоять из Grid с одним столбцом Table1.ID. Можно расширить набор столбцов, добавив новые поля в группу AutoLookup у Table1 (разумеется, это должны быть поля Table1). Пример В качестве примера используйте проект Произвольная Lookup форма. |
|
|
За это сообщение автора поблагодарили: alex55 (1), refined (0). |
26.06.2007, 16:44 | #2 |
Участник
|
Такой вопрос:
1. Создаю Форму. 2. Вставляю в нее datasource, grid, поля в grid. 3. Прописываю X++: this.selectMode(Grid_ItemId); Grid_ItemId.setFocus(); 5. Привязываю его непосредственно в HelpForm. В форме показывается только первое поле grid, хотя на самом деле вставляю их несколько. причем если не выставлять selectmode или не выставлять фильтр - результат от этого не меняется, просто значение не возвращается. |
|
Теги |
edt, grid, lookup, как правильно, форма |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|