| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Можно ли в string-контроле с выпадающим списком настроить множественность выбора?
			 
			
			Добрый день! 
		
		
		
		
		
		
		
	Вопрос, в принципе, в заголовке. Нужно, чтобы у стрингового поля, имеющего через EDT relation с какой-либо таблицей, можно было из выпадающего списка выбирать значение и прибавлять к уже ранее выбранным через запятую/точку с запятой. К примеру, есть CustTable - таблица контрагентов MyCustAccount - мой EDT, связанный с CustTable.CustAccount CustAccountControl - контрол на форме. Вот. Нужно чтобы, в CustAccountControl содержалось что-то типа Cust1, Cust2, Cust3 MS DAX 2009  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Возьми свет!!! 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Смотря где - разные методы. На форме проще, в диалоге сложнее. 
		
		
		
		
		
		
			Надо lookup перекрывать и там и там и у поля ставить опр. свойства. 
				__________________ 
		
		
		
		
	Axapta 3.0 sp 5 Oracle ![]() Я могу взорвать вам мозг!!!  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Можно попробовать свойство ReplaceOnLookup на контроле формы установить в No. 
		
		
		
		
		
		
		
		
			Тогда можно добавлять выбранные значения из лукапа. Последний раз редактировалось andrewK; 08.11.2013 в 09:15.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Vasiliusis (1). | |
| 
			
			 | 
		#4 | 
| 
			
			 Программатор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Меня тоже интересует, но Dialog
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Более сложный вариант, со своим лукапом. 
		
		
		
		
		
		
		
	Ваша проблема в fscInventLocationRange.replaceOnLookup(false); X++: public class myRunBase extends RunBase { DialogRunBase dialogRunBase; Range inventLocationRange; FormStringControl fscInventLocationRange; .... } DialogRunbase dialog(DialogRunbase dialog, boolean forceOnClient) { FormGroupControl fgc; dialogRunbase = super(dialog, forceOnClient); fgc = dialogRunBase.curFormGroup(); fscInventLocationRange = fgc.addControl(FormControlType::String, @"InventLocationRange"); fscInventLocationRange.extendedDataType(extendedTypeNum(InventLocationId)); fscInventLocationRange.text(inventLocationRange); fscInventLocationRange.replaceOnLookup(false); fscInventLocationRange.displayLength(50); fscInventLocationRange.limitText(250); ... } public void dialogPostRun(DialogRunbase _dialog) { if (_dialog.formRun()) { _dialog.formRun().controlMethodOverloadObject(this); _dialog.formRun().controlMethodOverload(true); fscInventLocationRange = _dialog.formRun().design().control(fscInventLocationRange.id()); } super(_dialog); } private void InventLocationRange_lookup() { SysTableLookup sysTableLookup; EmplTable emplTable = EmplTable::findByUserId_W(curuserid()); Query query = new Query(); QueryBuildDataSource queryBuildDataSource; ; if (!dialogRunbase) return; if (fscInventLocationRange) { sysTableLookup = SysTableLookup::newParameters(tableNum(InventLocation), fscInventLocationRange); queryBuildDataSource = query.addDataSource(tableNum(InventLocation)); if (emplTable.myInventSite) { queryBuildDataSource.addRange(fieldNum(InventLocation, InventSiteId)).value(queryValue(emplTable.myInventSite)); } sysTableLookup.addLookupfield(fieldNum(InventLocation, InventLocationId)); sysTableLookup.addLookupfield(fieldNum(InventLocation, Name)); sysTableLookup.parmQuery(query); sysTableLookup.performFormLookup(); } }  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Sada (4), G.Menshikh (1), arhat (1), SuperStar88 (1). | |
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Еще такой вопрос: как получить значение, которое было выбрано с помощью лукапа?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			И еще один: как в контроле переместить курсор ввода на конец введенной строки? 
		
		
		
		
		
		
		
	пока кроме X++: this.setSelection(strlen(this.text()), strlen(this.text()))  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 program-ёр 
		
			
	 | 
	
	
	
		
		
		
		 X++: protected DialogRunBase dialog() { Dialog dlg; FormStringControl fsc; ; dlg = super(); dlgCustAccount = dlg.addFieldValue(typeId(CustAccount), custAccount); fsc = dlgCustAccount.control(); fsc.replaceOnLookup(false); return dlg; } 
				__________________ 
		
		
		
		
	Становись лучше  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: MerkurievV (0). | |
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Добрый день. А кто-нибудь делал подобный пример, только на основе BaseEnum, т.е. надо в dialog получить например список Типов операций InventTransType?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Для энума логичнее использовать группу чекбоксов. 
		
		
		
		
		
		
		
	Если принципиально нужно поле с раскрывающимся списком, то я бы смотрел в сторону лукапа по временной таблице.  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Дмитрий Ерин 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Или ListView со свойством CheckBox = Yes
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Боец 
		
			
	 | 
	
	
	
		
		
		
		 
			
			AX2012: \Classes\SysLookupMultiSelect 
		
		
		
		
		
		
		
		
			e.g. http://www.dynamics101.com/2014/11/u...amics-ax-2012/ Последний раз редактировалось DSPIC; 21.12.2015 в 22:42.  | 
| 
	
 | 
| 
	
	 | 
	
| Опции темы | Поиск в этой теме | 
| Опции просмотра | |
		
  |