Word в OleContainer и context menu
3 отговора
126 прегледа
Word в OleContainer и context menu
Напоследък в ежедневието си се сблъсках с един неприятен ефект - зареждайки word документи в OleContainer (CreateObjectFromFile и DoVerb(ovShow)) понякога се получава контекстното меню на Word да не се появява при десен клик в контейнера. Това обикновено става при друг пуснат Word. State-а на контейнера ми си е osUIActive, менютата и тулбаровете са си там, но контекстното меню не. В отделно пуснатият Word работи, но в контейнера не. В определени ситуации пак се появява (Имам чувството, че става след показването му в другия Word, все едно той го създава наново??? Но не става винаги и не мога да хвана някаква зависимост кога и при какви условия се възстановява...).
Това поведение се запазва независимо от стойността на AutoVerbMenu. AllowInPlace е True. Версията на Word е 2003 (не съм опитвал с по-стари, но не ме устройва решение с downgrade към по-стара версия на Office).
Не знам дали успях да го обясня достатъчно ясно, но и на мен ми се омота вече в главата. Та въпроса ми е някой срещал ли е подобен ефект? Знае ли или има ли идея какво да направя?... Ще съм благодарен за всяка идея, която ви хрумне, 'щото аз вече се поизчерпах
Това поведение се запазва независимо от стойността на AutoVerbMenu. AllowInPlace е True. Версията на Word е 2003 (не съм опитвал с по-стари, но не ме устройва решение с downgrade към по-стара версия на Office).
Не знам дали успях да го обясня достатъчно ясно, но и на мен ми се омота вече в главата. Та въпроса ми е някой срещал ли е подобен ефект? Знае ли или има ли идея какво да направя?... Ще съм благодарен за всяка идея, която ви хрумне, 'щото аз вече се поизчерпах
Re: Word в OleContainer и context menu
Ще споделя моят кратък опит в подобна насока.
Трябваше да отворя екселски файл в делфи приложение. Когато го отворя в оле контейнера и се отвори ексел, всичко се скапваше. Офиса май беше 2003.
файла се появяваше и в ексела и в оле контейнера. Понеже бях забранил (или подменил) менютата в оле контейнера за да не може да се записва, менютата ту се появяваха ту изчезваха. Освен това понякога всичко заспиваше. След няколко дена мъки, зарязах този вариант. Не разбрах какво и защо става. По лесно ми беше да реша, че оле сървара на ексела е скапан :) Все едно неможе да създаде два независими оле обекта едновременно. Може умишлено така да е направено!? Основната идея, да се защити файла от запис (кражба) се провали.
Трябваше да отворя екселски файл в делфи приложение. Когато го отворя в оле контейнера и се отвори ексел, всичко се скапваше. Офиса май беше 2003.
файла се появяваше и в ексела и в оле контейнера. Понеже бях забранил (или подменил) менютата в оле контейнера за да не може да се записва, менютата ту се появяваха ту изчезваха. Освен това понякога всичко заспиваше. След няколко дена мъки, зарязах този вариант. Не разбрах какво и защо става. По лесно ми беше да реша, че оле сървара на ексела е скапан :) Все едно неможе да създаде два независими оле обекта едновременно. Може умишлено така да е направено!? Основната идея, да се защити файла от запис (кражба) се провали.
Workaround
Оказа се, че като му викнеш OleContainer.DoVerb(ovShow) май си оправя нещата. Поне засега така изглежда. Така че на Application.OnActivate си го викаме. Малко е неприятен ефекта с прерисуването на сървъра в контейнера, но се преживява 
Re: Workaround
Опитай с инсталиране на всички налични update на Windows i Office. Поне до XP проблема се решава по този начин.