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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.11.2006, 17:08   #1  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
изменение LookUp поле на форме
хочу cделать простую модификацию lookup поля для выбора Клиентов- чтоб было 2 поля, но широкие (чтоб все видно было).
Перекрываю метод контрола в дизайне, но не знаю как выставить ширину колонок на гриде.

X++:
public void lookup()
{
    SysTableLookup          sysTableLookup = SysTableLookup::newParameters(tableNum(CustTable), this);
    query                   query = new query();
    queryBuildDatasource    qbds;
    ;

    sysTableLookup.addLookupfield(fieldNum(CustTable, AccountNum),true);
    sysTableLookup.addLookupfield(fieldNum(CustTable, Name));

    qbds = query.addDataSource(tablenum(CustTable));
    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}
__________________
--- SHiSHok
Старый 14.11.2006, 17:19   #2  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Это хочется сделать в одной форме?
Или во всех lookup? Если во всех, то тогда следует изменить свойство displaylength EDT CustAccount, но это приведет к изменению везде в системе, где этот EDT используется
Старый 14.11.2006, 17:25   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от SHiSHok Посмотреть сообщение
Перекрываю метод
(Рыдая...) Не программируйте!!!!
Измените свойство типов как MikeR говорит.
__________________
полезное на axForum, github, vk, coub.
Старый 14.11.2006, 17:40   #4  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Цитата:
Сообщение от MikeR Посмотреть сообщение
Это хочется сделать в одной форме?
Или во всех lookup? Если во всех, то тогда следует изменить свойство displaylength EDT CustAccount, но это приведет к изменению везде в системе, где этот EDT используется
Хочется это сделать только на одной форме, посему особо не хочется менять EDT, изменять AutoLookUp, а также создавать отдельную формочку.
__________________
--- SHiSHok
Старый 14.11.2006, 18:30   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ну, если уж так хотите программировать, копайте в сторону изменения метода buildGrid класса SysTableLookup.
+ нужно добавить параметр ширины в метод addLookupField (а значит и в контейнер lookupItems) и его использовать в методе buildGrid.

Но, ИМХО, это изврат.
Если уж так не хотите менять EDT, создайте просто свою lookupForm и ее вызывайте. Меньше времени потратите
Старый 16.11.2006, 11:30   #6  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Ну, если уж так хотите программировать, копайте в сторону изменения метода buildGrid класса SysTableLookup.
.....
не надо ничего менять, как я и думал можно за помощью просто к FromRun обратиться и делай чё хотишь

X++:
public void lookup()
{
    SysTableLookup          sysTableLookup = SysTableLookup::newParameters(tableNum(CustTable), this);
    query                   query = new query();
    queryBuildDatasource    qbds;
    formRun                 fr;
    FormGridControl         grid;
    ;

    sysTableLookup.addLookupfield(fieldNum(CustTable, AccountNum),true);
    sysTableLookup.addLookupfield(fieldNum(CustTable, Name));


    fr=sysTableLookup.formRun();
    grid = fr.design().controlName("Grid");
    grid.width(512);
    grid.controlNum(1).width(130);
    grid.controlNum(2).width(350);

    qbds = query.addDataSource(tablenum(CustTable));
    sysTableLookup.parmQuery(query);
    this.performFormLookup(fr);
//    sysTableLookup.performFormLookup();
}
__________________
--- SHiSHok
За это сообщение автора поблагодарили: sukhanchik (4), pitersky (1), Consuelo (0).
Старый 16.11.2006, 11:46   #7  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Lightbulb faq
Может какой факью по работе с lookup забабахать (а то долго рыл по форуму относительно lookup-ов - много всяких тем)?
__________________
--- SHiSHok
Старый 03.12.2010, 12:20   #8  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Подниму тему, ибо возникла аналогичная задача.
Предложенный SHiSHok способ очень хороший. Но если нужно ещё и наложить qbr, то операции с FormRun надо опустить в самый низ метода - тогда всё отработает нормально. Т.е. вот так:
X++:
public void lookup()
{
.............................
 
    qbds = query.addDataSource(tablenum(CustTable));
// и тут все операции по созданию нужной query
   sysTableLookup.parmQuery(query);
 
    fr=sysTableLookup.formRun();
    grid = fr.design().controlName("Grid");
    grid.width(512);
    grid.controlNum(1).width(130);
    grid.controlNum(2).width(350);
 
     this.performFormLookup(fr);
//    sysTableLookup.performFormLookup();
}
P.S. Да, я знаю, что правильнее менять свойства EDT. К сожалению, это не всегда возможно(((((((((((((
__________________
С уважением,
Вячеслав

Последний раз редактировалось pitersky; 03.12.2010 в 12:32.
За это сообщение автора поблагодарили: ZVV (1), Poleax (1), Consuelo (0).
Старый 25.02.2011, 12:11   #9  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
И ещё один подъём.
На сей раз проблема в следующем. В диалог добавлено по EDT поле со ссылкой на RecId другой таблицы. В лукапе RecId полностью не виден, а растянуть поле в ширину руками нельзя. Как бы его задать автоматом?
Изменение ширины EDT не помогает - меняется размер поля в диалоге, а не в лукапе
__________________
С уважением,
Вячеслав
Старый 25.02.2011, 16:14   #10  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Расширить первое поле грида лукапной формы у меня получилось так:
X++:
public void performFormLookup(FormRun _form)
{
    FormGridControl     fgc;
    FormStringControl   fsc;
    ;
    super(_form);

    fgc = _form.design().controlNum(1);
    fsc = fgc.controlNum(1);
    fsc.width(200);
}
__________________
С уважением, Александр.
За это сообщение автора поблагодарили: DiZa (0).
Старый 25.02.2011, 16:19   #11  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Так не получится. У меня нет формы - только диалог
__________________
С уважением,
Вячеслав
Старый 25.02.2011, 16:26   #12  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
диалог в RunBase-классе?
__________________
С уважением, Александр.
Старый 25.02.2011, 16:29   #13  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от samolalex Посмотреть сообщение
диалог в RunBase-классе?
нет
__________________
С уважением,
Вячеслав
Старый 25.02.2011, 16:36   #14  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
не FormRun и не RunBase? Тогда что вы назывете диалогом?
Старый 25.02.2011, 16:38   #15  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
В голову пришла следующая мысль - создать диалог, например в джобе, и прикрепить к нему готовую форму, в методе performFormLookup контрола этой формы указать необходимый размер поля лукапного грида, как было приведено мною выше. Данный способ работает, код джобы:
X++:
static void TestDialog(Args _args)
{
    dialog                      dialog;
    Object                      o;
    Form                        frm = new Form(formstr(TestForm), false);
    ;

    dialog = new Dialog("Тест", o, "", frm);

    dialog.run();

    if(dialog.closedOk())
    {
    }

}
P.S. На форме диалога нужно будет создать группу DialogStartGrp, плюс ко всему, добавить необходимые контролы (CommandButton'ы и др.).
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 25.02.2011 в 16:56.
Старый 25.02.2013, 13:26   #16  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Да, изврат конечно, но способ с указанием размеров грида помог Lookup нужно было сделать только для одного поля, поэтому, как и в случаях выше, изменение edt не нужно.
X++:
public void lookup()
{
    //super();
   SysTableLookup       sysTableLookup       = SysTableLookup::newParameters(tableNum(SalesQuotationLine),this);
    Query                query                = new Query();
    QueryBuildDatasource queryBuildDatasource = query.addDataSource(tableNum(SalesQuotationLine));
    QueryBuildRange queryBuildRange;
    FormRun fr;
    FormGridControl grid;
    ;

    sysTableLookup.addLookupfield(fieldNum(SalesQuotationLine, QuotationId));
    sysTableLookup.addLookupfield(fieldNum(SalesQuotationLine, Name));
    //queryBuildDatasource.addOrderByField(fieldnum(SalesQuotationLine,Name),SortOrder::Descending);
    sysTableLookup.parmQuery(query);
      fr=sysTableLookup.formRun();
    grid = fr.design().controlName("Grid");
   // grid.width(370);
    grid.controlNum(1).width(100);
    grid.controlNum(2).width(270);
    grid.controlNum(1).height(30);
    grid.controlNum(2).height(30);
    this.performFormLookup(fr);
    //sysTableLookup.performFormLookup();
}
Может пригодится кому нибудь)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Набор однотипных lookup() методов на форме johny77 DAX: Программирование 1 10.04.2007 13:12
lookup фильтр в произвольной lookup форме 111andrei DAX: Программирование 4 05.10.2005 11:28
О Lookup-форме и FormFrame::Border NIMERE DAX: Программирование 3 22.03.2004 13:04
Объединить несколько полей таблицы в одном поле Grid-а на форме? storer DAX: Программирование 2 12.11.2003 14:08
Фильтрация в Lookup-форме Rem DAX: Программирование 5 27.04.2002 08:27
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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