|
14.11.2006, 17:08 | #1 |
Участник
|
изменение 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 |
MCT
|
Это хочется сделать в одной форме?
Или во всех lookup? Если во всех, то тогда следует изменить свойство displaylength EDT CustAccount, но это приведет к изменению везде в системе, где этот EDT используется |
|
14.11.2006, 17:40 | #3 |
Участник
|
Хочется это сделать только на одной форме, посему особо не хочется менять EDT, изменять AutoLookUp, а также создавать отдельную формочку.
__________________
--- SHiSHok |
|
14.11.2006, 17:25 | #4 |
Участник
|
(Рыдая...) Не программируйте!!!!
Измените свойство типов как MikeR говорит. |
|
14.11.2006, 18:30 | #5 |
Участник
|
Ну, если уж так хотите программировать, копайте в сторону изменения метода buildGrid класса SysTableLookup.
+ нужно добавить параметр ширины в метод addLookupField (а значит и в контейнер lookupItems) и его использовать в методе buildGrid. Но, ИМХО, это изврат. Если уж так не хотите менять EDT, создайте просто свою lookupForm и ее вызывайте. Меньше времени потратите |
|
16.11.2006, 11:30 | #6 |
Участник
|
Цитата:
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 |
Участник
|
faq
Может какой факью по работе с lookup забабахать (а то долго рыл по форуму относительно lookup-ов - много всяких тем)?
__________________
--- SHiSHok |
|
03.12.2010, 12:20 | #8 |
северный Будда
|
Подниму тему, ибо возникла аналогичная задача.
Предложенный 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(); }
__________________
С уважением, Вячеслав Последний раз редактировалось pitersky; 03.12.2010 в 12:32. |
|
|
За это сообщение автора поблагодарили: ZVV (1), Poleax (1), Consuelo (0). |
25.02.2011, 12:11 | #9 |
северный Будда
|
И ещё один подъём.
На сей раз проблема в следующем. В диалог добавлено по EDT поле со ссылкой на RecId другой таблицы. В лукапе RecId полностью не виден, а растянуть поле в ширину руками нельзя. Как бы его задать автоматом? Изменение ширины EDT не помогает - меняется размер поля в диалоге, а не в лукапе
__________________
С уважением, Вячеслав |
|
25.02.2011, 16:14 | #10 |
Участник
|
Расширить первое поле грида лукапной формы у меня получилось так:
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 |
северный Будда
|
Так не получится. У меня нет формы - только диалог
__________________
С уважением, Вячеслав |
|
25.02.2011, 16:26 | #12 |
Участник
|
диалог в RunBase-классе?
__________________
С уважением, Александр. |
|
25.02.2011, 16:29 | #13 |
северный Будда
|
__________________
С уважением, Вячеслав |
|
25.02.2011, 16:38 | #14 |
Участник
|
В голову пришла следующая мысль - создать диалог, например в джобе, и прикрепить к нему готовую форму, в методе 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()) { } }
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 25.02.2011 в 16:56. |
|
25.02.2011, 16:36 | #15 |
Участник
|
не FormRun и не RunBase? Тогда что вы назывете диалогом?
|
|
25.02.2013, 13:26 | #16 |
Участник
|
Да, изврат конечно, но способ с указанием размеров грида помог 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(); } |
|