if OleContainer1.State <> osEmpty then OleContainer1.DoVerb(ovShow)
Файл открывается, все нормально. Вопрос: как закрыть "word"? Или вместо всего этого - как открыть файл в MS Word (в вордовском окне)? Когда документ открывается, он заполняет полностью "шапку формы" (рис1, рис2). А при нажатии кнопки2 (без обработчика) шапка уходит (рис3)
Добавлено через 5 мин. хм, скрины наоборот прикрепились (смотреть в обратном поядке)
Эскизы прикрепленных изображений
Автор: volvo 7.04.2010 0:20
Цитата
Файл открывается, все нормально. Вопрос: как закрыть "word"?
Что значит "закрыть"? Пока OleContainer содержит файл - Word висит в памяти. А ты как хотел?
Цитата
Когда документ открывается, он заполняет полностью "шапку формы" (рис1, рис2). А при нажатии кнопки2 (без обработчика) шапка уходит (рис3)
И это совершенно правильное поведение. Пока фокус на OleContainer-е - меню того документа, что открыт в нем отображается в области меню формы. Как только Контейнер фокус потерял - меню исчезло. Что не так?
Автор: Client 7.04.2010 0:55
Цитата
Что значит "закрыть"?
Закрыть документ чтобы потом убарть OleContainer.
Цитата
Как только Контейнер фокус потерял - меню исчезло. Что не так?
Если потом опять тыкнуть на OleContainer меню не появляется. Мне вообщем надо сделать редактирование документа. Но вот как лучше - через OLE или может открыть документ в самом ворде. Почти одинаково, только кнопочки слева вверху нету
Добавлено через 7 мин. нашел метод
OleContainer1.Close;
Вроде то, что надо А можно вернуть меню при возврате фокуса?
Автор: volvo 7.04.2010 1:16
Цитата
Закрыть документ чтобы потом убарть OleContainer.
Закрывай:
procedure TForm1.btnClose(Sender: TObject); begin OleContainer1.DestroyObject; end;
Цитата
Если потом опять тыкнуть на OleContainer меню не появляется.
Обрати внимание на свойство AutoActivate у Контейнера. Оно показывает, каким образом контейнер активизируется. Если установить его в AsGetFocus, и передавать фокус на OleContainer не мышкотыканьем, а нажатием, скажем, на кнопку:
procedure TForm1.Button2Click(Sender: TObject); begin OleContainer1.SetFocus; end;
, то все прекрасно появляется.
Цитата
Мне вообщем надо сделать редактирование документа.
Если тебе надо редактирование, что ж ты открываешь документ через ovShow? Для чего ovOpen тогда?
Поищи на форуме, мы как-то с Айрой много чего с OleContainer-ом делали.
На самом деле, я бы все-таки сделал открытие внешнего приложения Word, вместо OleContainer-а. Не все, что доступно через работу с Word-ом доступно через OLE Automation.
Добавлено через 1 мин.
Цитата
нашел метод
Не, ну нормально? Чтоб открыть - делаешь CreateObject, а чтоб закрыть - Close? Нет уж, все по-взрослому Создавал объект - теперь разрушай объект !
Автор: Client 7.04.2010 1:34
OleContainer1.DestroyObject;
оК Если поставить AаGetFocus то и мышкой и через кнопку работает. Если на даблклик то.. тоже работает
Цитата
Для чего ovOpen тогда
а в чем разница? и там и там смог изменить текст.
Цитата
На самом деле, я бы все-таки сделал открытие внешнего приложения Word