06.09.2016, 16:39 | #1 |
Участник
|
InteractionClass
Здравствуйте!
Подскажите как перекрыть метод для кнопки на форме в привязанном InteractionClass ? помимо super() необходимо дописать в него еще один оператор. |
|
06.09.2016, 21:11 | #2 |
Боец
|
Поставьте кнопке свойство отображения только на клиенте, не помню как точно свойство называется (Target=Client ?), тогда можно перекрыть.
|
|
|
За это сообщение автора поблагодарили: AvrDen (1). |
07.09.2016, 08:00 | #3 |
Участник
|
Наверное InteractionClass тут не поможет. Лучший вариант вместо просто Button использовать MenuItemButton.
|
|
01.10.2016, 12:22 | #4 |
Участник
|
Приветствую!
Можно попробовать следующее: Создайте новый метод в своём Interaction классе, который выполнится вместо оригинального метода clicked(): X++: void info1(FormButtonControl _formButtonControl) { _formButtonControl.clicked(); // super() info('1'); // some code added just for example } X++: _formButtonControl.clicked(); После этого на initialized() методе Interaction класса написать что-то вроде: X++: Common externalRecord; FormDataSource formDS; FormRun formRun; FormButtonControl formButtonControl; super(); externalRecord = this.listPage().activeRecord(identifierStr(<YourDSName>)); if(externalRecord.isFormDataSource()) { formDs = externalRecord.dataSource(); formRun = formDs.formRun(); if (formRun) { formButtonControl = formRun.design().controlName(formControlStr(<YourFormName>,<YourButtonControlName>)); if(formButtonControl) { formButtonControl.registerOverrideMethod( methodStr(FormButtonControl,clicked), // метод кнопки, который хотите перекрыть methodStr(<YourClassInterationName>, info1), // метод, который будет вызван this); // экземпляр класса, который содержит указанный выше метод[ } } } Последний раз редактировалось Cardagant; 01.10.2016 в 12:29. |
|
01.10.2016, 21:51 | #5 |
Боец
|
Зачем такие сложности? Ваш код на портале все равно работать не будет, а раз так - то ставим кнопке свойство, отображаться только в клиенте, и система спокойно позволяет перекрывать clicked(). Еще можно из одной кнопки сделать две - одну отображать на портале, как стандартнную, а другую тольуо для клиента, с перекрытым clicked().
|
|