• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Как предоставить доступ к инициализированному движку дочерним формам?

Автор feron, 22.11.24, 13:18:36

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

feron

Доброго дня!

Компонент инициализируется как globalObjEngine.Initialize() и как к нему можно обратится из дочерних форм ? В главной форме основная активность с ним а в дочерних формах - дополнительные настройки к нему для работы.  Проблема в том что я пытался с ним работать как с переменной и он так не работает.

как быть?

feron

Попробовал варианты через статические классы - не выходит.

feron

Выручайте ребята ! я вроде все что смог перебрал с форума и gpt(он конечно такую дичь написал).

в 3 соснах заплутал - через классы на изи все работает.

feron

Цитата: feron от 23.11.24, 10:01:40в 3 соснах заплутал - через классы на изи все работает.

Рано радовался - оказалось что Module1.InitializeEngine() работает на той форме где была вызвана.
А так я по ошибке запускал второй его экземпляр..  :%:

Похоже и тут тупик. Как вариант использовать публичные переменные(через модификаторы свойств как вариант) для сохранения прогресса globalObjEngine и передавать их между формами для дальнейшей его работы. Колхоз просто жуть.

p3452

У каждой "формы" есть (должно быть!) свойство (поле) - Parent (или, что-то подобное)...
+ Благодарностей: 1

feron

globalObjEngine он не передается не как, те нельзя записать так -

Dim obj = globalObjEngine
return globalObjEngine

я правильно понимаю если передать свойство формы MdiParent то автоматом все объекты будут доступны дочерней форме ?


Вообще странно как то, тут наверно опыт маленький сказывается
создал модуль и добавил туда процедуру InitializeEngine() и вызываю Module1.InitializeEngine() в form1 в пределах form1 все работает замечательно.

Module1.InitializeEngine() в form2 создает второй его экземпляр без полученных результатов работы от form1.
а без InitializeEngine() и попытка запустить тестовую функцию Module1._test() которая оперирует результатами работы form1 выбивает ошибку что
не инициализирован

Теперь спустя несколько запусков ошибка ушла ..  :%:  и я так и не понял причину ее исчезновения.

Lemieux

Цитата: feron от 25.11.24, 00:32:58globalObjEngine он не передается не как, те нельзя записать так -

Dim obj = globalObjEngine
return globalObjEngine

я правильно понимаю если передать свойство формы MdiParent то автоматом все объекты будут доступны дочерней форме ?


Вообще странно как то, тут наверно опыт маленький сказывается
создал модуль и добавил туда процедуру InitializeEngine() и вызываю Module1.InitializeEngine() в form1 в пределах form1 все работает замечательно.

Module1.InitializeEngine() в form2 создает второй его экземпляр без полученных результатов работы от form1.
а без InitializeEngine() и попытка запустить тестовую функцию Module1._test() которая оперирует результатами работы form1 выбивает ошибку что
не инициализирован

Теперь спустя несколько запусков ошибка ушла ..  :%:  и я так и не понял причину ее исчезновения.
При создании экземпляра окна, передавайте в свойство Owner экземпляр окна из которого создаётся дочерний экземпляр. Я в свои окна передаю ссылку на окно КОМПАС.

feron

Цитата: Lemieux от 25.11.24, 08:18:05При создании экземпляра окна, передавайте в свойство Owner экземпляр окна из которого создаётся дочерний экземпляр. Я в свои окна передаю ссылку на окно КОМПАС.

Это я понял но как передать ссылку на то что не передается? Если можно простенький примерчик.

UU

Цитата: feron от 25.11.24, 13:57:13Это я понял но как передать ссылку на то что не передается? Если можно простенький примерчик.
Сообщением окну.

Lemieux

Window window = new Window();
Window kompasWindow = (Window)HwndSource.FromHwnd((IntPtr)instanceApi5.ksGetHWindow()).RootVisual;
window.Owner = kompasWindow;
+ Благодарностей: 1

feron


Lemieux

Цитата: feron от 25.11.24, 16:57:37Думаю эта запись не сработает, сейчас проверю.
Ясен пень. Этот код WPF, а Вы на Windows Form пишите. Я написал общую концепцию.

feron

Цитата: Lemieux от 25.11.24, 17:32:27Я написал общую концепцию.

я понял - это немножко не то.. дело в том что globalObjEngine не имеет окон если их только не вызвать, но это не туда вообще.

По сути это фреймворк для организации работы с моделями трансдьюсера.