AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.02.2003, 10:42   #1  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
? Почему формы не наследуются?
Есть форма

ClassDeclaration:
public class MyCustomForm extends ObjectRun
{
int _top, _left;
}

Хотел унаследовать от нее другую, правлю ClassDeclaration:
public class FormRun extends MyCustomForm
{
}

-- Ошибка 92: Некорректное наследование?

Кто неправ?
Старый 17.02.2003, 11:11   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Хотел унаследовать от нее другую, правлю ClassDeclaration:
public class FormRun extends MyCustomForm
{
}

-- Ошибка 92: Некорректное наследование?
Знаешь, вообще-то FormRun это класс. Причем не доступный в исходных кодах. Ты пытаешься создать свой FormRun, да еще и наследуешь его от своей формы...
Старый 17.02.2003, 11:13   #3  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
public class FormRun extends MyCustomForm
public class <Класс потомок> extends <Класс родитель>
Старый 17.02.2003, 12:04   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Ты пытаешься создать свой FormRun, да еще и наследуешь его от своей формы...
Я наследую его от MyCustomForm ( который есть наследник ObjectRun + два моих свойства ) - в чем криминал?

Цитата:
вообще-то FormRun это класс. Причем не доступный в исходных кодах
В этом?
Старый 17.02.2003, 12:24   #5  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Блин, что-то я сам запутался.

FormRun - это не форма. И наследовать его можно( если можно вообще) то от класса:

PHP код:
   public class FormRun extends ABCBase 
Такая штука скомпилится. И даже форма запустится - вот только чем это чревато.

И ГЛАВНОЕ - а зачем это вообще нужно. В чем цель ? Какая задача ?
Старый 17.02.2003, 12:35   #6  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Пока что - сохранять и восстанавливать Top и Left формы. Писать каждый раз один и тот же код для реализации всего, что для xSysLastValue требуется - лениво.

Есть конечно другие способы это делать, но так красивше как-то ( было бы )
Старый 17.02.2003, 12:43   #7  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Если очень хочется, то можно поизменять классик SysSetupFormRun. Он, как раз, унаследован от FormRun и он же создается через ClassFactory.
Старый 17.02.2003, 12:56   #8  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Пока что - сохранять и восстанавливать Top и Left формы.
Сам не пробовал, но наверное это делается так:

1. Пишется класс наследник FormRun
2. Перекрываются у него необходимые метода - init(), close()
3. Создаваемые формы наследуются от созданного класса.
Старый 17.02.2003, 13:09   #9  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Уже пробовал - "Некорректное наследование"
Старый 17.02.2003, 13:28   #10  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Уже пробовал - "Некорректное наследование"
Действительно.

Можно вот так:

public class dem_FormRun extends FormRun
{
}

где dem_FormRun наследник от FormRun, но толку никакого, так как перекрытыем методы в dem_FormRun'е все равно не отрабатывают.

А ты видел формы у которых в ClassDeclaration написано что-то иное, чем:

public class dem_FormRun extends ObjectRun
Старый 17.02.2003, 13:43   #11  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Поясню
(см. предыдущий постинг) методы перекрытые в SysSetupFormRun будут отрабатывать во всех формах системы (см. пример)
Вложения
Тип файла: xpo demoformrun.xpo (4.0 Кб, 218 просмотров)
Старый 17.02.2003, 14:19   #12  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
методы перекрытые в SysSetupFormRun будут отрабатывать во всех формах системы
Вижу. Спасибо. А на основании чего все это работает ? Где тот код, который за это отвечает ?
Старый 17.02.2003, 14:39   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Почему формы не наследуются?
Немного не в тему. Думаю, что будет полезным
http://technet.navision.com/usered/B...pplication.htm

http://technet.navision.com/usered/B...orms/Forms.htm

Особенно рекомендую
No code in the forms!: http://technet.navision.com/usered/B...ormsNoCode.htm



Видимо формы не наследуются, поскольку считается, что "The purpose of the forms is to support the presentation tier in the three tier client/server model, so you should not find any business logic in the forms."

Поэтому предполагается, что формы "используют" классы, а не наследуют.

На самом деле согласен, что технически можно бы и наследовать. Тогда получится что-то вроде вложенных форм и... компонентов COM. Но кто работал с COM компонентами согласится, что использование компонентов не есть однозначно хорошо.
Старый 18.02.2003, 08:59   #14  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
методы перекрытые в SysSetupFormRun будут отрабатывать во всех формах системы
Цитата:
Пока что - сохранять и восстанавливать Top и Left формы.
По-моему цель то не достигнута. Как я понимаю была необходимость изменить поведение ОПРЕДЕЛЕННЫХ, а не всех форм в системе. Или я не прав ?

Вариант предложеный Warm интересен, но в таком случае он не решает проблемы. Может есть еще какие-нибудь варианты ?

Цитата:
Но кто работал с COM компонентами согласится, что использование компонентов не есть однозначно хорошо.
Согласен, особенно если есть Net
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Почему на форме "Пользовательские настройки", когда я перехожу в нее из формы, отсутствует закладка "Запрос"? Hans DAX: Администрирование 0 05.07.2007 13:52
Создание Lookup формы Maxim Gorbunov DAX: База знаний и проекты 9 26.06.2007 16:44
Вызов формы, не модифицируя ее заголовка AndrewP DAX: Программирование 1 04.07.2003 14:20
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Динамические Lookup формы. Андрей Василюк DAX: База знаний и проекты 0 07.12.2001 07:07
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:52.