Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2008, 13:31   #1
Влажимир
Пользователь
 
Регистрация: 03.09.2007
Сообщений: 14
По умолчанию открытие Word

Мне нужно, чтобы при нажатие кнопки открывался документ, в котором пользователь будет контролировать введенные данные, отправлять на печать и закрывать.
Код:
WordApplication1.Connect;
WordApplication1.Documents.Open(Shablon,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam, EmptyParam,EmptyParam);
WordApplication1.Visible:=true;
Но после закрытия документа пользователем, кнопка второй раз не работает - недоступен сервер. Как сделать правильно?

Последний раз редактировалось mihali4; 15.05.2010 в 10:44.
Влажимир вне форума Ответить с цитированием
Старый 14.04.2008, 13:33   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Connect делай один раз.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.04.2008, 13:41   #3
Влажимир
Пользователь
 
Регистрация: 03.09.2007
Сообщений: 14
По умолчанию

Один раз Connect, значит он помещается в FormCreate. Всё равно сервер RPC недоступен при втором нажатие.
Влажимир вне форума Ответить с цитированием
Старый 14.04.2008, 14:19   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

А может дисконнект а потом опять коннект? (Чисто предположение)
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 14.04.2008, 14:22   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я лично в своих делишках вообще ставил AutoConnect
Вот пример:
Код:
unit Unit1;

interface

uses         crtfox,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleServer, Word2000, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    WordDocument1: TWordDocument;
    WordApplication1: TWordApplication;
    Button2: TButton;
    Panel1: TPanel;
    Button3: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure WordDocument1Open(Sender: TObject);
    procedure WordApplication1WindowActivate(Sender: TObject; var Doc,
      Wn: OleVariant);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
   var named,ro:OleVariant;   MyWind:Window;
   MyWindRec:WindRec; NameCap:string;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
WordDocument1.Close;
WordApplication1.Quit;
end;

procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
named :='c:\temp\q.doc';
ro:=true;
WordApplication1.Visible:=true;
NameCap:=TimeToStr(time)+inttostr(random(1000));
WordApplication1.Documents.Open(named,EmptyParam,ro,EmptyParam,EmptyParam,
 EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordApplication1.ActiveWindow.Caption:=NameCap;
MyWind:=WordApplication1.ActiveWindow;
nop;
{ WordDocument1.Application.Visible :=true;

WordDocument1.Application.Documents.Open(named,EmptyParam,ro,EmptyParam,EmptyParam,
 EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
}
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
mywind.Close(EmptyParam,EmptyParam);

end;

procedure TForm1.WordApplication1WindowActivate(Sender: TObject; var Doc,
  Wn: OleVariant);
begin
  nop;
end;

end.
Никакого коннекта - Сервер не падал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.04.2008, 15:30   #6
Влажимир
Пользователь
 
Регистрация: 03.09.2007
Сообщений: 14
По умолчанию

ничего не помогло
Влажимир вне форума Ответить с цитированием
Старый 14.04.2008, 16:27   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Бросьте вы эти сервера. Вот я набросал вам абсолютно рабочий примерчик без них:
Код:
procedure Tfmain.Button2Click(Sender: TObject);
var msword: olevariant;
begin
try
msword := createoleobject('word.application');
msword.visible := True;
msword.documents.open('c:\test.doc');
//...начало вашей обработки
ShowMessage('aaa');
//...конец обработки
finally
msword.quit;
end;
end;
Нажимайте кнопку хоть до посинения...

Последний раз редактировалось mihali4; 14.04.2008 в 16:29.
mihali4 вне форума Ответить с цитированием
Старый 14.04.2008, 16:38   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Бросьте вы эти сервера.
Эх. класный способ, вот только в дизайне не удобный для тех кто плохо знает методы Ворда )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие формы inret Общие вопросы Delphi 3 06.05.2008 14:37
Открытие файла Messir_Leonard Win Api 2 09.04.2008 19:33
открытие файлов Ensoph Общие вопросы Delphi 5 31.03.2008 20:45
«Открытие программирования» Alesik Общие вопросы по Java, Java SE, Kotlin 0 13.09.2007 23:17
как перехватить открытие чужого приложенияпытаюсь перехватить открытие любого приложе rpy3uH Win Api 2 02.12.2006 12:12