| 
			
			 | 
		#1 | 
| 
			
			 newborn in DAX 
		
			
	 | 
	
	
	
		
		
			
			
			Форма с комбо и запуск разных форм по выбранному значению
			 
			
			Самое простое решение это создание кучи однотипных форм которые вызываются из общей формы по нажатию соответствующей кнопки. 
		
		
		
		
		
		
		
	Проблема в том что больше половины из них абсолютно одинаковы и различаются что в executeQuery фильтр= 4, в другой форме 5 и.д. Т.е. copy-paste и дело в шляпе. Но не хочется засорять. Есть несколько которые особенные. Хочется сделать форму с комбо всех опций. А в executeQuery что-то типа case 4: //особая форма как её запустить? case 1,2,3,6,7: //запустить общую форму но передать в неё параметр для фильтрации 1 или 2 или 3 .. то что пользователь выберет Или такое возможно и нужно ли много программировать?(уровень начинающий) В основной таблице одни и те же поля использовались для разных значений в зависимости от параметра.(типа то номер телефона, то номер машины) И ещё вопрос если есть возможность в общей форме сделать часть полей невидимыми в зависимости от выбранного параметра и менять названия поля в гриде Видимо это тоже надо как-то передавать ?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вопрос сводится к такому. Как передать на форму параметр? 
		
		
		
		
		
		
		
	Для этого нужно использовать структуру Args. Ищите на форуме  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 
			
			можно на одну форму создать много MenuItem-ов. У них заполнить свойства EnumTypeParameter и EnumParameter. И в дальнейшем вызывать нужные вам MenuItem-ы. 
		
		
		
		
		
		
			На самой форме вы увидите эти параметры через element.args(). В частности: X++: element.args().parmEnumType(); element.args().parmEnum(); element.args().parmEnum(); - это какое значение Enuma передано 
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 newborn in DAX 
		
			
	 | 
	
	
	
		
		
		
		 
			
			lev' 
		
		
		
		
		
		
		
	у меня не Enum а ExtendetDataType т.е. я не могу записать их в MenuItem поле EnumTypeParameter . Создавать свой Enum или как-то по другому можно используя ExtendetDataType  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Тогда в args можно передавать соответствующую запись этого справочника. Для передачи табличных курсоров в структуре args предусмотрен метод record(). Если немного изменить дизайн формы и вместо комбобокса отобразить грид отображающий те же значения, то тогда можно стандартными средствми MorphX (без программирования) добиться передачи активной строки грида через menuitem Последний раз редактировалось S.Kuskov; 23.06.2011 в 14:16.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			У MenuItem-ов есть еще такое свойство как Parametersю. Туда можно писать все что угодно , например, какой нибудь текст "Вариант1",2,3 и т.д.  
		
		
		
		
		
		
			И в форме получать его через element.args().parm(); 
				__________________ 
		
		
		
		
	-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: S.Kuskov (2), timaluhs (1). | |
| 
			
			 | 
		#7 | 
| 
			
			 newborn in DAX 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
да Вы правы ExtendetDataType привязан к таблице. Честно пока с Args не очень понятно - пытаюсь читать форум. Может есть ссылки или tutorial в самой DAX 2009 Цитата: 
	
 
		 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 newborn in DAX 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
В основное форме создайте переменную типа str _variant. В методе init() вашей формы перед супером напишите _variant = element.args().parm(); И далее как вы просите в executeQuery что-то типа case 4: ................ 
				__________________ 
		
		
		
		
	-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 newborn in DAX 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Pustik
			 
 
			Ну сделайте вы основной форме меню -  MenuButton, прикрепите к нему несколько MenuItem-ов, которые будут открывать вашу форму ,у которых в свойстве Parameters будет стоять текстовое значение. У одного - '4', у второго - '1', у третьего '2' и т.д.  
		
	В основное форме создайте переменную типа str _variant. В методе init() вашей формы перед супером напишите _variant = element.args().parm(); И далее как вы просите в executeQuery что-то типа case 4: ................ На форме1 есть MenuItem который вызывает форму2 все определения я делаю на форме 2? вот код ClassDeclaration str _variant; init: _variant = element.args().parm(); super(); executeQuery: queryAuto.value(sysQuery::value(_variant)); ... super; получаю пустую форму если в явном виде - queryAuto.value(sysQuery::value("12")); то выдаёт результат Где я не права? Debuger на _variant ругается: Error: Symbol "_variant" was not found Последний раз редактировалось timaluhs; 23.06.2011 в 15:21.  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			в отладчике в executeQuery убедитесь, что переменная _variant имеет значение "12", потому что если если в явном виде - queryAuto.value(sysQuery::value("12")) работает, должно работать
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их.  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 newborn in DAX 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Debuger  на _variant  ругается: 
		
		
		
		
		
		
		
	Error: Symbol "_variant" was not found что может быть не на месте?  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
и воспользуйтесь советом Pustik посмотрите в отладчике заполняется ли _variant каким либо значением. 
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 
			
			ещё вопросик, ругается при инициализации или при использовании в ExecuteQuery?
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну не знаю попробуйте в свойстве менюайтема parameters поставить ни число, а например "Вариант12".И в executeQuery тогда вот так :  
		
		
		
		
		
		
			switch (_variant) { case 'Вариант12': queryAuto.value(sysQuery::value("12")); ........... } .......... 
				__________________ 
		
		
		
		
	-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их.  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 newborn in DAX 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Debuger на _variant ругается: Error: Symbol "_variant" was not found а где правильно?  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			логичнее на форме, но обязательно до супера. Вообще не понятно, попробуйте просто тогда вот так: 
		
		
		
		
		
		
			В методе executeQuery : if (element.args().parm() == 'Вариант12') queryAuto.value(sysQuery::value("12")); 
				__________________ 
		
		
		
		
	-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их.  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 newborn in DAX 
		
			
	 | 
	
	
	
		
		
		
		 
			
			заработало не понятно как и почему. Может не сохранила во время. 
		
		
		
		
		
		
		
	Я пыталась queryAuto.value(sysQuery::value(element.args().parm())); но тоже не работало. Кстати отладчик упорно нр признаёт _variant хотя есть данные на форме  | 
| 
	
 |