AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.11.2001, 17:01   #1  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Создание 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);
  }
Структура Lookup формы
Во-первых, следует изменить значение свойства 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  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
Такой вопрос:
1. Создаю Форму.
2. Вставляю в нее datasource, grid, поля в grid.
3. Прописываю
X++:
this.selectMode(Grid_ItemId);
Grid_ItemId.setFocus();
4. Выставляю фильтр из настроек (для чего и писалась форма)
5. Привязываю его непосредственно в HelpForm.

В форме показывается только первое поле grid, хотя на самом деле вставляю их несколько. причем если не выставлять selectmode или не выставлять фильтр - результат от этого не меняется, просто значение не возвращается.
Теги
edt, grid, lookup, как правильно, форма

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Автоматический вызов lookup при запуске формы demID DAX: Программирование 6 24.09.2004 17:34
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Создание feature key на поле формы tov DAX: Администрирование 11 30.06.2003 15:49
lookup-формы изменяющегося размера Maxim Gorbunov DAX: Программирование 9 18.01.2002 19:22
Динамические Lookup формы. Андрей Василюк DAX: База знаний и проекты 0 07.12.2001 07:07
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:13.