Форум по Delphi программированию

 



Вернуться   Форум по Delphi программированию > Все о Delphi > Технологии
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.05.2007, 13:04
Alex88 Alex88 вне форума
Прохожий
 
Регистрация: 30.05.2007
Сообщения: 1
Репутация: 10
По умолчанию Подскажите по OLE+WordXP

Помогите плз разобраться. У меня есть програмка (на Delphi, это не принципиально) которая выбрасывает в Word документы и открывает их юзеру для правки (с помощью компоненты Word97). Все работало под NT4 и Win2000 без проблем. Под XP+OfficeXP тоже все работает, но перед открытием Word выдает сообщение "Неправельно указана единица измерения", а потом нормально открывает документ. Если Word уже открыт, то сообщение не выдает и сразу открывает документ. Т.е. прога работает, но юзеры пугаются окошка с сообщением и его нужно убрать

WordApp:=TWordApplication.Create(nil);
WordApp.Connect;
WordApp.Documents.Add(TemlateFileName,EmptyParam);
...
... - здесь заполняю документ в WrdApp.ActiveDocument
...
WordApp.Visible:=True;
WordApp.Activate; - здесь выдается сообщение, но Word нормально запускается
WordApp.Disconnect;
WordApp.Free;

Пробовал:
1)вместо компоненты Word97 брал Word2000 и WordXP
2)устанавливал WordApp.DisplayAlerts:=wdAlertsNone
3)менял WordApp.Options.MeasurementUnit
Без результата. Сообщение выдается при отработке WordApp.Activate, ждет нажатия на ОК и потом все нормально работает. Для пробы поставил WordApp.Activate сразу после WordApp.Connect и все равно при отработке Activate (до добавления документа) Word выдает сообщение
Подскажите плз: о какой единице он говорит и как убрать сообщение?
Ответить с цитированием
  #2  
Старый 05.09.2007, 12:20
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

implementation

uses ComObj;
var W:variant;

//Открываем Word
Код:
Function CreateWord:boolean;
begin
CreateWord:=true;
try
W:=CreateOleObject('Word.Application');
except
CreateWord:=false;
end;
End;

//Функция для видимости Word(false-не показывать, ну и true - показать)
Код:
Function VisibleWord(visible:boolean):boolean;
begin
VisibleWord:=true;
try
W.visible:= visible;
except
VisibleWord:=false;
end;
End;

//Функция создания нового документа
Код:
Function AddDoc:boolean;
 Var Doc_:variant;
begin
AddDoc:=true;
try
Doc_:=W.Documents;
Doc_.Add;
except
AddDoc:=false;
end;
End;

//Открытие ранее созданного документа.
Код:
Function OpenDoc(file_:string):boolean;
 Var Doc_:variant;
begin
OpenDoc:=true;
try
Doc_:=W.Documents;
Doc_.Open(file_);
except
OpenDoc:=false;
end;
End;

//Сохранить документ
Код:
Function SaveDocAs(file_:string):boolean;
begin
SaveDocAs:=true;
try
W.ActiveDocument.SaveAs(file_);
except
SaveDocAs:=false;
end;
End;

//Сохранить документ в Юникоде
Function SaveDocAsUnicod(file_:string):boolean;
 const wdFormatUnicodeText=7;
begin
SaveDocAsUnicod:=true;
try
W.ActiveDocument.SaveAs(file_,FileFormat:=wdFormatUnicodeText);
except
SaveDocAsUnicod:=false;
end;
End;

//Закрытие документа
Код:
Function CloseDoc:boolean;
begin
CloseDoc:=true;
try
W.ActiveDocument.Close;
except
CloseDoc:=false;
end;
End;

//Ну и самого Ворда
Код:
Function CloseWord:boolean;
begin
CloseWord:=true;
try
W.Quit;
except
CloseWord:=false;
end;
End;

Использование:
Код:
if CreateWord then begin      //Запускаем Ворд
VisibleWord(true);               //Показываем его пользователю
If AddDoc then begin           //Создаем новый документ
{OpenDoc('C:\123.doc')}     //Ну или открываем существующий

//Теперь юзер делает че ему надо....

SaveDocAs('c:\123');          //если надо - сохраняем
CloseDoc;                         //закрываем документ
CloseWord;                       //закрываем Ворд

P.S. Проверял на Word2000/2003/XP -Все работает без проблем. Писал прямо на форуме, поэтому могут быть маленькие опечатки!
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2020

ВКонтакте   Facebook   Twitter