Форум: "Начинающим";
Текущий архив: 2012.04.22;
Скачать: [xml.tar.bz2];
ВнизКак вывести окно Word на передний план? Найти похожие ветки
← →
И. Павел © (2011-12-29 13:03) [0]Здравствуйте.
Я создаю документ 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.
Заранее спасибо.
← →
Kilowatt © (2011-12-29 13:08) [1]BringToFront?
← →
И. Павел © (2011-12-29 13:16) [2]> [1] Kilowatt © (29.12.11 13:08)
> BringToFront?
Уточните, пожалуйста, о каком BringToFront идет речь? VCL/API/COM или др.?
← →
И. Павел © (2011-12-29 13:18) [3]Нашел забавный способ :)
Но все же интересно, можно ли вывести окно Word на передний план без обходных путей.app.WindowState := 2;
app.WindowState := 0;
← →
Kilowatt © (2011-12-29 13:50) [4]app.BringToFront?
← →
И. Павел © (2011-12-29 14:09) [5]> [4] Kilowatt © (29.12.11 13:50)
> app.BringToFront?
Оба варианта:
app.BringToFront;
app.BringToFront := True;
Приводят к ошибке: method not supported by automation object... Т.е. нет такого метода в OLE Word 2007...
← →
Dimka Maslov © (2011-12-29 14:15) [6]У WordApplication нет метода BringToFront. Кроме того, обычно BringToFront заставляет приложение моргать в панели задач. Следовательно, метод с WindowState - единственно возможный. Но для пущей правильности (чтоб отрабатывать случай максимизированного окна) надо сначала сохранить значение, присвоить двойку, а потом значение восстановить. Можно ещё выключить анимацию при сворачивании окон, чтобы не моргало.
← →
И. Павел © (2011-12-29 16:35) [7]> Можно ещё выключить анимацию при сворачивании окон, чтобы
> не моргало.
Я сделал так (решил максимизировать окно, т.к. после того, как пользователь нажал на кнопку печати, он скорее всего все равно будет работать именно с этим документом):app.WindowState := wdWindowStateMinimize;
app.Visible := True;
app.WindowState := wdWindowStateMaximize;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.04.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c