ВУЗ:
Составители:
24
Здесь в иллюстративных целях используется функция
ClassIDToProgID, позволяющая извлечь из реестра программный идентифи-
катор ProgId по заданному идентификатору класса CLSID. Поскольку , с одной
стороны , отображение ProgId–CLSID в реестре сохраняется при инсталляции
сервера, а с другой стороны , значение параметра CLASS_WordApplication
описано в импортированном модуле библиотеки типов, мы гарантированно
подключаемся именно к тому серверу, библиотека типов которого использова-
на в проекте. В случае неудачи соединения сервер запускается при помощи
класса CoWordApplication, образованного в процессе импорта сопряженного
класса библиотеки типов.
Последнее, о чем следует сказать перед тем как привести исходный код
целиком, это о способе вызова методов с необязательными параметрами. Рас -
смотрите следующий прием :
D := W.Documents.Add(EmptyParam,EmptyParam,
EmptyParam,EmptyParam);
Если вернуться к просмотру библиотеки типов, можно заметить, что ме-
тод Add имеет четыре необязательных параметра, для которых сервер , по-
видимому, предусматривает значения по умолчанию . Если нас устраивают эти
значения, можно в качестве параметров передать EmptyParam. А теперь – обе-
щанный полный текст генератора отчета, переработанный в соответствии с из-
ложенными принципами:
procedure TForm1.Button1Click(Sender: TObject);
var W:_Application; D:_Document; S: Selection;
PosBeg,PosEnd,v1,v2,v3: OleVariant;
i,j: Integer; ws: WideString;
begin
with Table1 do begin
DatabaseName:='DBDEMOS'; TableName:='country.db'; Open
end;
try // если Word запущен - подключиться к нему
W := GetActiveOleObject(
ClassIDToProgID(CLASS_WordApplication))as _Application;
except // если нет - запустить
W:=CoWordApplication.Create;
end;
W.Visible := True;
D := W.Documents.Add(EmptyParam,EmptyParam,
EmptyParam,EmptyParam);
S:=W.Selection;
S.TypeText('Hello, World!'#13);
PosBeg := S.Start;
j:=0; ws:='№';
for i:=0 to Table1.FieldCount-1 do
ws:=ws+#9+Table1.Fields.Fields[i].FieldName;
24 Здесь в иллюстративных целях используется функция ClassIDToProgID , позволяющая извлечь из реестра программный идентифи- катор ProgId по заданному идентификатору класса CLSID. Поскольку, с одной стороны, отображение ProgId–CLSID в реестре сохраняется при инсталляции сервера, а с другой стороны, значение параметра CLASS_WordApplication описано в импортированном модуле библиотеки типов, мы гарантированно подключаемся именно к тому серверу, библиотека типов которого использова- на в проекте. В случае неудачи соединения сервер запускается при помощи класса CoWordApplication , образованного в процессе импорта сопряженного класса библиотеки типов. Последнее, о чем следует сказать перед тем как привести исходный код целиком, это о способе вызова методов с необязательными параметрами. Рас- смотрите следующий прием: D := W.Documents.Add(EmptyParam,EmptyParam, EmptyParam,EmptyParam); Если вернуться к просмотру библиотеки типов, можно заметить, что ме- тод Add имеет четыре необязательных параметра, для которых сервер, по- видимому, предусматривает значения по умолчанию. Если нас устраивают эти значения, можно в качестве параметров передать EmptyParam. А теперь – обе- щанный полный текст генератора отчета, переработанный в соответствии с из- ложенными принципами: procedure TForm1.Button1Click(Sender: TObject); var W:_Application; D:_Document; S: Selection; PosBeg,PosEnd,v1,v2,v3: OleVariant; i,j: Integer; ws: WideString; begin with Table1 do begin DatabaseName:='DBDEMOS'; TableName:='country.db'; Open end; try // если Word запущен - подключиться к нему W := GetActiveOleObject( ClassIDToProgID(CLASS_WordApplication))as _Application; except // если нет - запустить W:=CoWordApplication.Create; end; W.Visible := True; D := W.Documents.Add(EmptyParam,EmptyParam, EmptyParam,EmptyParam); S:=W.Selection; S.TypeText('Hello, World!'#13); PosBeg := S.Start; j:=0; ws:='№'; for i:=0 to Table1.FieldCount-1 do ws:=ws+#9+Table1.Fields.Fields[i].FieldName;
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »