многократное открытие модального окна из немодального - где ошибка?

Автор Дмитрий Геннадьевич, 08.12.18, 14:57:44

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

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

Дмитрий Геннадьевич

Здравствуйте!
До сих пор использовал при разработке приложений под Компас только модальные окна.
Сейчас возникла необходимость работы с немодальным окном, в котором расположены кнопки, открывающие модальные окна.
В лоб получил ошибку выполнения.
На данном форуме нашел только вот это: http://forum.ascon.ru/index.php/topic,28668.0.html
Попытался использовать функции iKompasObject.ksSystemControlStart('') и iKompasObject.ksSystemControlStop.
Причем iKompasObject.ksSystemControlStart('') использую в коде сразу после метода Show для запуска немодального окна, а функцию iKompasObject.ksSystemControlStop - по событию onClose того же немодального окна. Все работает, кроме двух нюансов:
1. Если по кнопке запуска на немодальной форме идет запуск процедуры, в которой происходит перебор открытых документов, то второй раз нажатие на эту кнопку приводит к ошибке.
2. Невозможно закрыть приложение, пока не будет закрыто немодальное окно (хотелось бы отловить событие попытки закрытия окна приложения и закрывать сначала данную форму, а потом уже приложение, либо просто выполнять iKompasObject.ksSystemControlStop при попытке закрытия приложения). Как это сделать, не нашел.
Видимо, моя проблема заключается в том, что я не вполне понимаю, как работают эти две функции, но, к сожалению, толком ничего по ним найти не могу (((

Дмитрий Геннадьевич

14.12.18, 19:47:00 #1 Последнее редактирование: 14.12.18, 20:09:51 от Дмитрий Геннадьевич
Окончательно запутался с SystemControlStop и SystemControlStart
среда Delphi 10.2
Компас 15.1
тупо последовательно чередую данные функции в коде и получаю неожиданные значения ksGetSystemControlStartResult.
кроме того, SystemControlStop вызывает сворачивание всего приложения.
где что почитать? что неправильно делаю? или это глюк такой?


Дмитрий Геннадьевич

15.12.18, 14:21:02 #3 Последнее редактирование: 15.12.18, 14:34:26 от Дмитрий Геннадьевич
"....без кода, о чём можно разговаривать...."
приложил код, почистил лишний функционал, не относящийся к теме... всё стало еще хуже (((
тем не менее, проблема осталась (усугубилась)  :(

Описанная проблема возникает при выборе меню "Автоматизация при завершении проектов"
далее клик по кнопке "Пакетное архивирование ..."
давее выходим из полученного модального окна и повторно жмем на "Пакетное архивирование ..."
но там после чистки еще одна проблема обозначилась, вероятно связанная

Дмитрий Геннадьевич

15.12.18, 15:16:49 #4 Последнее редактирование: 15.12.18, 21:16:31 от Дмитрий Геннадьевич
Заставил таки работать, но довольно странным образом.
Как оказалось, дело не в том, что форма, из которой повторно вызывается модальная форма, сама немодальная.
А как раз в том, что вызываемая модальная форма при событии onClose сама себя уничтожает (где то происходит Form.Free, хотя нигде и не прописано). Поэтому повторно и не происходит ShowModal. Ну прописал Create перед ShowModal, теперь все работает, но вот где все же происходит Free, остается загадкой. Код прилагаю. Если что, речь идет о форме MULTI_FORM в модуле ZIPER_MULTI.

Дмитрий Геннадьевич

Еще раз подправил код (убрал лишнюю "грязь" и совсем дурацкие ошибки), вроде работает, но вопросы остались...