Тема: Задавить запрос на save

Выполняю acDocManager->closeDocument(pDoc) - документ закрывается, но перед этим выыдает запрос на сохранение изменений. Как его закрыть принудительно, чтоб не появлялся этот запрос.

Re: Задавить запрос на save

> Sergei
1. Предварительно сохранить документ.
2. Если изменения не важны - выставить переменную DBMODE в 0 и закрыть.

Re: Задавить запрос на save

> Sergei
Закрыть принудительно с сохранением или без сохранения?
Если без сохранения, то используй недокументированную функцию acdbSetDbmod: https://www.caduser.ru/forum/topic27962.html
А если с сохранением, то сохрани и запроса не будет.

Re: Задавить запрос на save

Александр, а вообще корректно ли так закрывать:
я нахожусь в реакторе documentToBeDestroyed() дакумента1. И мне надо, чтоб вместе с этим документом закрылись документы 2 и 3. И я прямо из этого реактора пытаюсь выполнить acDocManager->closeDocument(Doc2)и acDocManager->closeDocument(Doc3). Результат не утешает - чаще всего фаталы.
А если из реактора это сделать нельзя, то как все это связать вместе?

Re: Задавить запрос на save

> Sergei
Конечно некорректно. Отмечай в этом реакторе необходимость закрыть эти документы, а закрывай из другого реактора или посылать в эти документы команду _CLOSE при помощи acDocManager->sendStringToExecute() предварительно сбросив для них DBMOD в 0. Но учти. Если ты таким образом закроешь все документы (zero document mode) то появятся новые проблемы.

Re: Задавить запрос на save

Понятно. А из какого реактора тогда их можно закрыть?

Re: Задавить запрос на save

Нужно экспериментировать. Я не знаю логику работы твоего приложения. Но можно попробовать из documentDestroyed. А еще можно из него запускать таймер, а уже из функции таймера закрывать документы. А может лучше подойдет AcEditorReactor::commandEnded - все зависит от логики приложения.

Re: Задавить запрос на save

Вариант с acdbSetDbmod + sendStringToExecute()c _close работает, но только когда закрываешь один документ. Если их>1 то закрывается только последний из списка.
А логика у меня такая: есть родительский чертеж с кучей блоков. сделал распаковку состава блока в новый чертеж (appContextNewDocument + wblockCloneObjects). Такие дочерние чертежи могут редактироваться потом изменения отправляются обратно в блок родителя. Но если иы закрываем родителя, то естственно дочерние чертежи также по идеологии должны закрыться.

Re: Задавить запрос на save

Поиграйся аргументами sendStringToExecute()