Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];

Вниз

TOleContainer   Найти похожие ветки 

 
REA   (2003-10-21 15:19) [0]

Как отследить момент закрытия сервера (от контейнера TOleContainer), открытого в отдельном окне?


 
REA   (2003-10-21 15:57) [1]

Сам кажется нашел. Нужно перегрузить Invalidate и там отслеживать состояние.
Тогда другой вопрос: я пытаюсь закрыть сервер-приложение по Close, но закрывается не само приложение, а только документ.
Как закрыть и сервер?


 
Sandman25   (2003-10-21 16:02) [2]

DestroyObject?


 
REA   (2003-10-21 16:14) [3]

Не, не то. Он во-первых сам Объект разрушает, а он мне еще нужен и во-вторых вызывает FOleObject.Close(OLECLOSE_NOSAVE)
А мне как раз надо Save. И тоже кстати не факт, что сервер закроется.


 
Sandman25   (2003-10-21 16:27) [4]

Судя по описанию Close, Вам нужен именно он. Если сервер закрыть, то кто будет отображать Ваш объект? Сам по себе OleContainer ничего не умеет.


 
REA   (2003-10-21 16:32) [5]

Уточняю задачу: объект открывается в отдельном окне (например вызывается Word) вне окна моего приложения. При закрытии методом Close MDI документ в новом окне закрывается, а сам Word остается открыт и окно его тоже открыто.
Задача: закрыть окно Word, не прекращая работу сервера и не выгружая объект из памяти. Т.е. так же как если бы я нажал крестик на окне Word, но программно.
В принципе можно и совсем сервер закрыть - открыть его с помощью Run несложно.


 
Sandman25   (2003-10-21 16:38) [6]

Если Вы запускаете через Run, то похоже, что закрыть его нормально не получится, во всяком случае в Help я о такой возможности ничего не нашел.

Но можно сделать это через Ole - подключиться вручную и закрыть самому. CreateOleObject, Quit.


 
REA   (2003-10-21 17:01) [7]

Полностью это выглядит так: у меня есть некое приложение, которое содержит документ и в нем OLE объекты как скрытые TOLEContainer. Отрисовываются они через
OleDraw(FContainer.OleObjectInterface, DVASPECT_CONTENT, Canvas.Handle, rc);

Сделать Inplace редактирование у меня не получилось (повидимому ввиду некооректной работы самого TOLEContainer), поэтому я вызываю приложение во внешнем окне для редактирования загруженного в память документа. Для отрисовки разумеется приходится держать сервер запущенным.

>Если Вы запускаете через Run, то похоже, что закрыть его
>нормально не получится, во всяком случае в Help я о такой
>возможности ничего не нашел.

Да в принципе никакой разницы нет как запускать. Я делал тестовое приложение и запускал двойным нажатием на TOLEContainer.
Все тоже самое.
Может есть какой интерфейс OLE который нужно дернуть? Их там много и разобраться с разбегу не удается что куда.


 
Sandman25   (2003-10-21 17:06) [8]

[7] REA © (21.10.03 17:01)

Я не знаю, к сожалению. Я OleContainer ни разу в жизни не использовал.
Если Вы точно знаете, что за документы у Вас хранятся, то можно у них вызывать соответствующие методы (типа Quit для документов Excel и Word), но ИМХО лучше исправить ситуацию, чтобы редактирование было InPlace - тогда не придется запускать внешнее редактирование.


 
REA   (2003-10-21 17:10) [9]

>лучше исправить ситуацию, чтобы редактирование было InPlace
Зато масса других проблем возникает с меню, ToolBar, выравниванием и т.п.
Лучше уж пусть пустое окно висит.


 
Sandman25   (2003-10-21 17:15) [10]

[9] REA © (21.10.03 17:10)

Но тогда если окно появляется по команде пользователя ("редактировать"), то и закрываться оно должно тоже пользователем. Пускай в крестик тыкает :)
Я с трудом представляю себе глаза пользователя, который вызвал редактирование, в Word изменил и сохранил документ, переключился в Вашу программу и тут вдруг увидел, что Word почему-то закрылся. Или еще хуже - изменил без желания сохранять, а Ваша программа за него сохранила и тем самым испортила документ.


 
REA   (2003-10-21 18:06) [11]

>Я с трудом представляю себе глаза пользователя, который вызвал редактирование, в Word изменил и сохранил документ

Там нет кнопки сохранить документ. Это поддокумент составного документа.

>переключился в Вашу программу и тут вдруг увидел, что Word почему-то закрылся.

Сам он не закроется, а только по какому-либо действию пользователя: например "закрыть составной документ".

>Или еще хуже - изменил без желания сохранять, а Ваша программа за него сохранила и тем самым испортила документ.

Сохранится документ в моем документе, а его уже надо сохранить руками. К тому же есть Undo.


 
Sandman25   (2003-10-21 18:07) [12]

[11] REA © (21.10.03 18:06)

ИМХО тогда остается только найти что-то типа Quit в конкретном сервере.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.017 c
7-98915
uno crezo
2003-08-20 07:27
2003.10.30
регистр


14-98845
TCrash
2003-10-11 19:06
2003.10.30
CS


7-98896
vvvvvvvvv
2003-08-06 12:33
2003.10.30
Как отследить копирование-перенос файлов в системе?


1-98716
AndreyG
2003-10-21 04:42
2003.10.30
Как добавить примечание в ячейку Excel


1-98683
Softal
2003-10-21 08:19
2003.10.30
richEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский