IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> MS WORD
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Привет smile.gif
if OpenDialog1.Execute and (OpenDialog1.FileName <> '') then

OleContainer1.CreateObjectFromFile(OpenDialog1.FileName, false);

// Если загрузилось что - нибудь, то покажем

if OleContainer1.State <> osEmpty then OleContainer1.DoVerb(ovShow)
Файл открывается, все нормально. Вопрос: как закрыть "word"?
Или вместо всего этого - как открыть файл в MS Word (в вордовском окне)?
Когда документ открывается, он заполняет полностью "шапку формы" (рис1, рис2). А при нажатии кнопки2 (без обработчика) шапка уходит (рис3)

Добавлено через 5 мин.
хм, скрины наоборот прикрепились smile.gif
(смотреть в обратном поядке)

Сообщение отредактировано: Client -


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Файл открывается, все нормально. Вопрос: как закрыть "word"?
Что значит "закрыть"? Пока OleContainer содержит файл - Word висит в памяти. А ты как хотел?

Цитата
Когда документ открывается, он заполняет полностью "шапку формы" (рис1, рис2). А при нажатии кнопки2 (без обработчика) шапка уходит (рис3)
И это совершенно правильное поведение. Пока фокус на OleContainer-е - меню того документа, что открыт в нем отображается в области меню формы. Как только Контейнер фокус потерял - меню исчезло. Что не так?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
Что значит "закрыть"?
Закрыть документ чтобы потом убарть OleContainer.
Цитата
Как только Контейнер фокус потерял - меню исчезло. Что не так?
Если потом опять тыкнуть на OleContainer меню не появляется.
Мне вообщем надо сделать редактирование документа. Но вот как лучше - через OLE или может открыть документ в самом ворде. Почти одинаково, только кнопочки слева вверху нету smile.gif

Добавлено через 7 мин.
нашел метод
OleContainer1.Close;
Вроде то, что надо smile.gif
А можно вернуть меню при возврате фокуса?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
Закрыть документ чтобы потом убарть 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 тогда? smile.gif

Поищи на форуме, мы как-то с Айрой много чего с OleContainer-ом делали.

На самом деле, я бы все-таки сделал открытие внешнего приложения Word, вместо OleContainer-а. Не все, что доступно через работу с Word-ом доступно через OLE Automation.

Добавлено через 1 мин.
Цитата
нашел метод
Не, ну нормально? Чтоб открыть - делаешь CreateObject, а чтоб закрыть - Close? Нет уж, все по-взрослому smile.gif Создавал объект - теперь разрушай объект !
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


OleContainer1.DestroyObject;
оК smile.gif
Если поставить AаGetFocus то и мышкой и через кнопку работает. Если на даблклик то.. тоже работает smile.gif
Цитата
Для чего ovOpen тогда
а в чем разница? и там и там смог изменить текст.
Цитата
На самом деле, я бы все-таки сделал открытие внешнего приложения Word
Вызываю
shellexecute(Application.MainForm.Handle,nil,'C:\Doc1.docx',nil,nil,SW_SHOWNORMAL);
так же нормально? smile.gif
Спасибо за помощь! good.gif

Добавлено через 2 мин.
Цитата
Не, ну нормально? Чтоб открыть - делаешь CreateObject, а чтоб закрыть - Close? Нет уж, все по-взрослому Создавал объект - теперь разрушай объект !
ph34r.gif
тоже заподозрил что-то не то... smile.gif

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
так же нормально?
Ну, если тебе не нужна возможность из программы управлять Word-ом - то этого будет достаточно. Все-таки, приводи строки к типу PChar...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 5:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name