![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вывести окно Word на передний план?
И. Павел © (2011-12-29 13:03:00)Здравствуйте.
Я создаю документ Word на основе dot файла, используя ole (Word 2007 но работать должно и в других версиях; версия Delphi XE). Потом пытаюсь вывести приложение Word на передний план (app.Activate). При запуске в Delphi (т.е. вместе с отладчиком) работает, а при простом запуске exe нет.
Вот код (кончено, между ActiveDocument и Visible := true есть код, но даже если его удалить, созданный пустой документ Word все равно не хочет выводиться на передний план)
app := CreateOleObject('Word.Application');
app.Documents.Add(ProgrDir+'\doc.dot').Activate;
doc := app.ActiveDocument;
app.Visible := True;
app.Activate;
Подскажите, пожалуйста, как вывести сгенерированный документ Word на передний план?
PS: конечно, можно попытаться найти Handle окна Word и вывести его на передний план средствами WIN API. Но называет Word окно как вздумается и, вероятно, это может меняться от версии к версии Word.
Заранее спасибо.
И. Павел (2011-12-29 16:35:00) [1]> Можно ещё выключить анимацию при сворачивании окон, чтобы
> не моргало.
Я сделал так (решил максимизировать окно, т.к. после того, как пользователь нажал на кнопку печати, он скорее всего все равно будет работать именно с этим документом):
app.WindowState := wdWindowStateMinimize;
app.Visible := True;
app.WindowState := wdWindowStateMaximize;
Dimka Maslov (2011-12-29 14:15:00) [2]У WordApplication нет метода BringToFront. Кроме того, обычно BringToFront заставляет приложение моргать в панели задач. Следовательно, метод с WindowState - единственно возможный. Но для пущей правильности (чтоб отрабатывать случай максимизированного окна) надо сначала сохранить значение, присвоить двойку, а потом значение восстановить. Можно ещё выключить анимацию при сворачивании окон, чтобы не моргало.
И. Павел (2011-12-29 14:09:00) [3]> [4] Kilowatt © (29.12.11 13:50)
> app.BringToFront?
Оба варианта:
app.BringToFront;
app.BringToFront := True;
Приводят к ошибке: method not supported by automation object... Т.е. нет такого метода в OLE Word 2007...
Kilowatt (2011-12-29 13:50:00) [4]app.BringToFront?
И. Павел (2011-12-29 13:18:00) [5]Нашел забавный способ :)
Но все же интересно, можно ли вывести окно Word на передний план без обходных путей.
app.WindowState := 2;
app.WindowState := 0;
И. Павел (2011-12-29 13:16:00) [6]> [1] Kilowatt © (29.12.11 13:08)
> BringToFront?
Уточните, пожалуйста, о каком BringToFront идет речь? VCL/API/COM или др.?
Kilowatt (2011-12-29 13:08:00) [7]BringToFront?