AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 14.11.2006, 17:08   #1  
SHiSHok ist offline
SHiSHok
Участник
Benutzerbild von SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Registriert seit: 28.07.2005
Ort: Донецк
изменение 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
Alt 14.11.2006, 17:19   #2  
MikeR ist offline
MikeR
MCT
Benutzerbild von MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1.628 / 627 (24) +++++++
Registriert seit: 28.11.2005
Ort: просто землянин
Это хочется сделать в одной форме?
Или во всех lookup? Если во всех, то тогда следует изменить свойство displaylength EDT CustAccount, но это приведет к изменению везде в системе, где этот EDT используется
Alt 14.11.2006, 17:25   #3  
mazzy ist offline
mazzy
Участник
Benutzerbild von mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29.472 / 4494 (208) ++++++++++
Registriert seit: 29.11.2001
Ort: Москва
Blog-Einträge: 10
Zitat:
Zitat von SHiSHok Beitrag anzeigen
Перекрываю метод
(Рыдая...) Не программируйте!!!!
Измените свойство типов как MikeR говорит.
__________________
полезное на axForum, github, vk, coub.
Alt 14.11.2006, 17:40   #4  
SHiSHok ist offline
SHiSHok
Участник
Benutzerbild von SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Registriert seit: 28.07.2005
Ort: Донецк
Zitat:
Zitat von MikeR Beitrag anzeigen
Это хочется сделать в одной форме?
Или во всех lookup? Если во всех, то тогда следует изменить свойство displaylength EDT CustAccount, но это приведет к изменению везде в системе, где этот EDT используется
Хочется это сделать только на одной форме, посему особо не хочется менять EDT, изменять AutoLookUp, а также создавать отдельную формочку.
__________________
--- SHiSHok
Alt 14.11.2006, 18:30   #5  
kashperuk ist offline
kashperuk
Участник
Benutzerbild von kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.361 / 2084 (78) +++++++++
Registriert seit: 30.05.2004
Ort: Atlanta, GA, USA
Ну, если уж так хотите программировать, копайте в сторону изменения метода buildGrid класса SysTableLookup.
+ нужно добавить параметр ширины в метод addLookupField (а значит и в контейнер lookupItems) и его использовать в методе buildGrid.

Но, ИМХО, это изврат.
Если уж так не хотите менять EDT, создайте просто свою lookupForm и ее вызывайте. Меньше времени потратите
Alt 16.11.2006, 11:30   #6  
SHiSHok ist offline
SHiSHok
Участник
Benutzerbild von SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Registriert seit: 28.07.2005
Ort: Донецк
Zitat:
Zitat von kashperuk Beitrag anzeigen
Ну, если уж так хотите программировать, копайте в сторону изменения метода 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
This post has been rated by: sukhanchik (4), pitersky (1), Consuelo (0).
Alt 16.11.2006, 11:46   #7  
SHiSHok ist offline
SHiSHok
Участник
Benutzerbild von SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Registriert seit: 28.07.2005
Ort: Донецк
Lightbulb faq
Может какой факью по работе с lookup забабахать (а то долго рыл по форуму относительно lookup-ов - много всяких тем)?
__________________
--- SHiSHok
Alt 03.12.2010, 12:20   #8  
pitersky ist offline
pitersky
северный Будда
Benutzerbild von pitersky
Ex AND Project
Соотечественники
 
1.518 / 435 (18) +++++++
Registriert seit: 26.09.2007
Ort: Солнечная система
Подниму тему, ибо возникла аналогичная задача.
Предложенный 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. К сожалению, это не всегда возможно(((((((((((((
__________________
С уважением,
Вячеслав

Geändert von pitersky (03.12.2010 um 12:32 Uhr)
This post has been rated by: ZVV (1), Poleax (1), Consuelo (0).
Alt 25.02.2011, 12:11   #9  
pitersky ist offline
pitersky
северный Будда
Benutzerbild von pitersky
Ex AND Project
Соотечественники
 
1.518 / 435 (18) +++++++
Registriert seit: 26.09.2007
Ort: Солнечная система
И ещё один подъём.
На сей раз проблема в следующем. В диалог добавлено по EDT поле со ссылкой на RecId другой таблицы. В лукапе RecId полностью не виден, а растянуть поле в ширину руками нельзя. Как бы его задать автоматом?
Изменение ширины EDT не помогает - меняется размер поля в диалоге, а не в лукапе
__________________
С уважением,
Вячеслав
Alt 25.02.2011, 16:14   #10  
samolalex ist offline
samolalex
Участник
Benutzerbild von samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Registriert seit: 18.06.2010
Ort: Москва
Расширить первое поле грида лукапной формы у меня получилось так:
X++:
public void performFormLookup(FormRun _form)
{
    FormGridControl     fgc;
    FormStringControl   fsc;
    ;
    super(_form);

    fgc = _form.design().controlNum(1);
    fsc = fgc.controlNum(1);
    fsc.width(200);
}
__________________
С уважением, Александр.
This post has been rated by: DiZa (0).
Alt 25.02.2011, 16:19   #11  
pitersky ist offline
pitersky
северный Будда
Benutzerbild von pitersky
Ex AND Project
Соотечественники
 
1.518 / 435 (18) +++++++
Registriert seit: 26.09.2007
Ort: Солнечная система
Так не получится. У меня нет формы - только диалог
__________________
С уважением,
Вячеслав
Alt 25.02.2011, 16:26   #12  
samolalex ist offline
samolalex
Участник
Benutzerbild von samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Registriert seit: 18.06.2010
Ort: Москва
диалог в RunBase-классе?
__________________
С уважением, Александр.
Alt 25.02.2011, 16:29   #13  
pitersky ist offline
pitersky
северный Будда
Benutzerbild von pitersky
Ex AND Project
Соотечественники
 
1.518 / 435 (18) +++++++
Registriert seit: 26.09.2007
Ort: Солнечная система
Zitat:
Zitat von samolalex Beitrag anzeigen
диалог в RunBase-классе?
нет
__________________
С уважением,
Вячеслав
Alt 25.02.2011, 16:36   #14  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.452 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
не FormRun и не RunBase? Тогда что вы назывете диалогом?
Alt 25.02.2011, 16:38   #15  
samolalex ist offline
samolalex
Участник
Benutzerbild von samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Registriert seit: 18.06.2010
Ort: Москва
В голову пришла следующая мысль - создать диалог, например в джобе, и прикрепить к нему готовую форму, в методе 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'ы и др.).
__________________
С уважением, Александр.

Geändert von samolalex (25.02.2011 um 16:56 Uhr)
Alt 25.02.2013, 13:26   #16  
user_ax ist offline
user_ax
Участник
Benutzerbild von user_ax
 
601 / 39 (3) +++
Registriert seit: 07.10.2012
Ort: 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();
}
Может пригодится кому нибудь)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Набор однотипных 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

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 11:25 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.