| 
			
			 | 
		#1 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
			
			
			Скопировать объект Form в Runtime
			 
			
			можно? как это сделать?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Боец 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А подробнее?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Есть объект (экземпляр) класса Form. Необходимо сделать его копию.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Banned 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если даже и можно, то не стоит: опыт показывает, что можно легко спровоцировать утечки памяти и/или креш клиента.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: S.Kuskov (2). | |
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Согласен с предыдущим оратором. 
		
		
		
		
		
		
		
	Но если очень хочеться: TreeNode.AOTDuplicate() P.S.: Расскажите. Зачем данная операция понадобилась вам?  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Автору данной ветки, если я правильно понял, необходимо создать новый экземпляр класса Form, который был бы точно таким же (точной копией) другого экземпляра Form. 
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 
			
			не знаю насколько корректен мой ответ, если что меня поправят  
		
		
		
		
		
		
			![]() скопировать экземпляр класса Form можно простым присвоение ему того экземпляра, который хотите скопировать. пример: X++:     Form    form;
    Form    formCopy;
    ;
    form = classFactory.createClass(classNum(Form));
    form.addDataSource('InventTable');
    formCopy    = form;
    form = null;
    info(formCopy.dataSource(1).name());З.Ы. оговорюсь, возможно я ошибаюсь, буду очень признателен если меня поправят  
		
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не, не правда. Обе ссылочные переменные ссылаются на одну и туже область памяти. Просто в последствии переменная  form получает ссылку "в никуда", а formCopy остается ссылаемой на прежний объект в памяти.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: lev (2). | |
| 
			
			 | 
		#9 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Тогда прошу считать мой пример, как пример того, как делать не надо  
		
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Для явного удаления объекта из памяти следует использовать метод finalize объекта.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 
			
			ага, попробовал - это действительно так. спасибо.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если так, то почему бы просто ещё раз не открыть ту же форму с тем же Args?
		 
		
		
		
		
		
		
		
		
			Последний раз редактировалось S.Kuskov; 24.11.2010 в 10:35.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Gustav (3). | |
| 
			
			 | 
		#13 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
хорошо бы если на этот вопрос ответил автор темы  
		
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
X++: static void Job_CreateCopyForm(Args _args) { Args args; FormRun formRun; FormRun formRunCopy; FormDataSource fds; FormDataSource fdsCopy; QueryBuildRange qbr; RAssetTable rassetTable; RecId prevRecId = intMin(); // -2 147 483 648; Set setRecId = new Set(Types::Integer); int i; ; // генерируем строку критерия по RecId (10 первых значений из таблицы) for (i=1;i<=10;i++) { select firstonly rassetTable order by RecId where rassetTable.RecId > prevRecId; prevRecId = rassetTable.RecId; setRecId.add(prevRecId); } // запускаем первую форму - основную args = new Args(formstr(RAssetTable)); formRun = classFactory.formRunClass(args); formRun.init(); formRun.design().caption(strFmt('ПЕРВАЯ ФОРМА: %1',formRun.design().caption())); formRun.design().visible(false); formRun.run(); // фильтруем и сортируем записи fds = formRun.dataSource('RAssetTable'); qbr = fds.queryRun().query().dataSourceNo(1).addRange(fieldNum(RAssetTable,RecId)); qbr.value(strRem(setRecId.toString(),'{ }')); fds.queryRun().query().dataSourceNo(1).addSortField(fieldNum(RAssetTable,AccountNum),SortOrder::Descending); fds.research(); // отображаем первую форму formRun.design().visible(true); // запускаем вторую форму - "копию первой" formRunCopy = classFactory.formRunClass(formRun.args()); formRunCopy.init(); formRunCopy.design().caption(strFmt('КОПИЯ - ВТОРАЯ ФОРМА: %1',formRunCopy.design().caption())); formRunCopy.design().visible(false); formRunCopy.run(); // "копируем" текущий фильтр и сортировку первой формы во вторую fdsCopy = formRunCopy.dataSource('RAssetTable'); fdsCopy.queryRun(fds.queryRun()); fdsCopy.research(); // отображаем вторую форму formRunCopy.design().visible(true); formRunCopy.wait(); formRun.wait(); }  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Вообще я пытаюсь добавить датасорс на форму в рантайме, но почему-то аксапта падает от этого или выдает странные ошибки рантайма. Поиском нашел эту тему Динамическое создание DataSource на форме, и добавление элементов дизайна., но это работает не всегда.  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вы уверены что вашу задачу следует решать в Аксапте? Во что вы хотите превратить систему? Может быть раскажите что вы создаёте?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Хочу добавлять поля на формы динамически (с помощью настройки). Поля из связанной таблицы. 
		
		
		
		
		
		
		
	Вроде бы с помощью FormBuild* классов все просто сделать, но возникают непонятные ошибки или аксапта валится. Причем по-видимому проблема только с FormBuildDataSource. Кнопки/поля без проблем добавляются и все работает.  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Хотя не нужно, не отвечайте. Чуствую я, что вы уже в таки дебри залезли. Я туда не хочу  . Не у многих есть время заниматься абстрактными "программисткими" задачами по созданию очередного универсального инструмента. Но если у вас что-нибудь интересное всё-таки получиться, тогда милости просим  
		 | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			напишу майкрасовту пожалуй, пускай чинят
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
	
	 | 
	
		
  |