?? bcb021.txt
字號:
用C++ Builder 實現Word 97自動化
用C++ Builder 實現Word 97自動化
江西南昌華東交大控制信息工程研究所(330013)
劉遵雄
---- 要 在 應 用 程 序 中 控 制Word 97 的 運 行, 首 先 必 須 在 編
制 自 動 化 客 戶 程 序 時 使 其 頭 文 件 中 包 含 文 件ComObj.hpp,
寫 入 #include 。 編 程 工 具C + + Builder 的 開 發 者 把 調 用Word 97
自 動 化 對 象 的 功 能 大 致 包 裝 成 了 幾 個Ole object class 函 數,
應 用 程 序 設 計 人 員 可 以 很 方 便 地 利 用 它 們。
* 設 定Ole 對 象 的 屬 性:
OlePropertyGet(propname)
OlePropertySet(propname,value)
其 中value 是 任 何 可 以 轉 換 為Variant 型 的 值
* 調 用Ole 對 象 的 方 法:
OleProcedure(OleProcName,[val,...])
OleFunction(OleFuncName,[val,...])
其 中val 是 任 何 可 以 轉 換 為Variant 型 的 值
---- 可 以 通 過OleFunction(OleFuncName,[val,...]) 父 對 象 返 回 其 子 對
象, 句 法 是: 子 對 象 名= 父 對 象 名. OleFunction(OleFuncName,val)。
而 且 可 以 對 此 方 法 組 合 從 父 對 象 返 回 其 下 層 對 象 的
對 象。
---- C + + Builder 中 使 用OLE 自 動 化 控 制Word 97, 必 須 掌 握Word
97 的 自 動 化 對 象 及Microsoft Word Visual Basic 幫 助 文 件 中 關 于Word
的 對 象 方 法 和 屬 性。Word 對 象 代 表 一 個 Word 的 元 素, 如 文
檔、 段 落、 書 簽 或 單 個 的 字 符。 集 合 是 一 個 對 象, 該
對 象 包 含 其 他 數 個 對 象, 通 常 這 些 對 象 屬 于 相 同 的 類
型, 例 如, 一 個 集 合 對 象 中 可 包 含 文 檔 中 的 所 有 書 簽
對 象。 通 過 使 用 屬 性 和 方 法, 可 以 修 改 單 個 的 對 象,
也 可 修 改 整 個 的 對 象 集 合。 屬 性 是 對 象 的 一 個 特 性 或
者 該 對 象 操 作 的 一 個 方 面。 例 如, 文 檔 屬 性 包 含 名
稱、 內 容、 保 存 狀 態, 以 及 是 否 啟 用 修 訂。 要 更 改 一
個 對 象 的 屬 性, 可 以 修 改 屬 性 的 值。 方 法 是 對 象 可 以
進 行 的 動 作。
---- 代 表Word 97 應 用 程 序 的 自 動 化 對 象 有 兩 個:Word.Application
和 Word.Basic, 通 過Application 對 象 的WordBasic 屬 性 可 以 允 許 它 們
之 間 進 行 變 換 賦 值。 在C + +Builder 中 通 過CreateOleObject("
…") 就 可 啟 動Word 并 獲 得 句 柄, 將 其 賦 給Variant 變 量。
如 有 兩 個Variant 型 變 量V1 和V2, WordBasic 是Application 對 象 的 屬
性:
V1=CreateOleObject("Word.Application");
V2=V1.OleFunction("WordBasic")。
---- 以 下 通 過 一 個 簡 單 的 例 子, 具 體 說 明 如 何 在C +
+ Builder 中 實 現 Word 97 的 自 動 化 功 能, 其 功 能 是 打 開 或 創
建 新 文 檔, 并 向 當 前 活 動 中 發 送 文 字、 插 入 位 圖 和 畫
條 直 線 等。 在C + + Builder 集 成 開 發 環 境IDE 下, 建 立 一 項
目Project1, 其 中 包 含Form1( 其Caption 為OLE Automation) 的 單 元 文 件Unit1.cpp。
表 單Form1 的OpenDialog1 對 象 的Filter 設 為 Word 文 檔 或 位 圖。Unit1.cpp
的 頭 文 件 中 必 須 包 含"ComObj.hpp"。 代 碼 如 下:
頭 文 件Unit1.h 代 碼 為:
#ifndef Unit1H
#define Unit1H
// - - - - - - - - - - - - -
#include
#include
#include
#include
#include
#include
#include
// - - - - - - - - - - - - -
class TForm1 : public TForm
{
__published: // IDE -managed Components
TButton *Button1;
TOpenDialog *OpenDialog1;
TButton *Button2;
TMemo *Memo1;
TBevel *Bevel1;
TButton *Button3;
TLabel *Label1;
TButton *Button5;
TBevel *Bevel2;
TLabel *Label2;
TLabel *Label3;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button3Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Button5Click(TObject *Sender);
private:// User declarations
public:// User declarations
Variant V,Vdocuments,Vdocument1,Vdocument2,Vactive;
/ * 定 義Variant 型 全 局// 變 量,
分 別 指 代Application 對 象, V 的Documents
對 象, Vdocuments 的Document 對 象
(Vdocument1,Vdocument2) 以 及
V 的ActiveDocument 對 象 */
int tag; // 用 于 記 錄Button3 被 點 擊 的 次 數
__fastcall TForm1(TComponent * Owner);
Variant __fastcall GetWordObject();
// 獲 得Word 97 自 動 化 對 象 函 數
void __fastcall Add(int i);
// 編 輯 當 前 活 動 文 檔 指 定 的
段 落 文 字 的 函 數
};
// - - - - - - - - - - - - -
extern PACKAGE TForm1 *Form1;
// - - - - - - - - - - - - -
#endif
Unit1.cpp 文 件 代 碼 為:
#include
#pragma hdrstop
#include "Unit1.h"
#include
// - - - - - - - - - - - - -
#pragma package(smart_init)
#pragma resource " *.dfm"
TForm1 *Form1;
// - - - - - - - - - - - - -
__fastcall TForm1::TForm1(TComponent * Owner)
: TForm(Owner)
{
tag=1;// 令tag 的 初 值 為1,
其 將 隨Button3 的 點 擊 次 數 而 遞 增
}
// - - - - - - - - - - - - -
Variant __fastcall TForm1::GetWordObject()
{
Variant Obj1;
AnsiString AppName="Word.Application" ;
HWND hPrevApp = ::FindWindow(NULL,
"Microsoft Word");
if(!hPrevApp)
{
Obj1=CreateOleObject(AppName) ;
//Word 沒 啟 動 就 啟 動 它 返 回 一 自 動 化 對 象
}
else
Obj1=GetActiveOleObject(AppName);
// 否 則 返 回 正 在 運 行 的 實 例 自 動 化 對 象
Obj1.OlePropertySet("Visible",true);
return Obj1;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int j;
V=GetWordObject();
// 獲 得Word 97 自 動 化 對 象Application
Vdocuments=V.OleFunction("Documents");
// 通 過Application 獲 取Documents 對 象
if (OpenDialog1 ->Execute())
// 使 用Documents 對 象 的Open 方 法
打 開 文 件, 并 返 回Document 對 象
Vdocument1=Vdocuments.OleFunction
("Open",OpenDialog1 ->FileName);
j=Vdocument1.OleFunction("ComputeStatistics",2);
// 計 算 打 開 文 檔 的 頁 數
Label1 ->Caption=" 文 件" +
Vdocument1.OlePropertyGet("Name")
+" 頁 數 是:" +IntToStr(j);
}
// - - - - - - - - - - - - -
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int i,j;
i=tag;
Vactive=V.OleFunction("ActiveDocument");
// 獲 取Application 的ActiveDocument 對 象
j=Vactive.OleFunction("ComputeStatistics",4);
// 計 算 當 前 文 檔 的 段 落 數
// 的 的Paragraphs 集 合 對 象 增 加 一 段
Vactive.OleFunction("Paragraphs").OleFunction("Add");
i=j +i;// 當 前 文 檔 被 編 輯 的 段 落 序 號
Add(i);// 調 用 編 輯 當 前 活 動 文 檔
指 定 的 段 落 文 字 的 函 數
Memo1 ->Clear();// 清 除Memo1 的 內 容
tag=tag +1;
}
// - - - - - - - - - - - - - -
void __fastcall TForm1::Button2Click(TObject *Sender)
{
V=GetWordObject();
Vdocuments=V.OleFunction("");
Vdocument2=Vdocuments.OleFunction("Add");
// 使 用Documents 對 象 的Add 方 法 新 建 文 檔
Vdocument2.OlePropertySet("Password","12345");
// 設 置 新 建 文 檔 的 口 令
}
// - - - - - - - - - - - - - -
void __fastcall TForm1::Add(int i)
{
Variant V1;
// 設 置 被 編 輯 段 的 內 容、 字 體 大 小、
顏 色 及 是 否 斜 體
V1=((Vactive.OleFunction("Paragraphs")).
OleFunction("Item",i)).OleFunction("Range");
(V1.OleFunction("Font")).OlePropertySet("Italic",true);
(V1.OleFunction("Font")).OlePropertySet("Size",18);
(V1.OleFunction("Font")).OlePropertySet("ColorIndex",6);
(V1.OleFunction("Font")).OlePropertySet("Size",18);
V1.OlePropertySet("Text",Memo1 ->Text);
}
// - - - - - - - - - - - - -
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Variant Vshape,Vactive1,Vline;
Vactive1=V.OleFunction("ActiveDocument");
Vshape=Vactive1.OleFunction("Shapes");
// 獲 取 當 前 活 動 文 檔 的Shapes 對 象
// 使 用Shapes 對 象 的AddLine 方 法 化 直 線
Vline=Vshape.OleFunction("AddLine",90,80,400,80);
if (OpenDialog1 ->Execute())
// 使 用Shapes 對 象 的AddPicture
方 法 插 入 指 定 位 圖
Vshape.OleFunction("AddPicture",OpenDialog1
->FileName,50,50,80,100);
}
----此 程 序 在C + + Builder 3 中 編 譯 通 過, 運 行 該 應 用 程
序 首 先 必 須 獲 得 文 檔, 然 后 才 可 以 編 輯 文 檔。
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本福利一区二区|
国产一区二区电影|
亚洲欧美日韩电影|
中文字幕亚洲一区二区va在线|
欧美tickling挠脚心丨vk|
777欧美精品|
在线综合视频播放|
日韩一区二区三区观看|
精品国产污污免费网站入口
|
日韩亚洲电影在线|
欧美一区二区三区人|
日韩午夜小视频|
精品成人免费观看|
中文字幕欧美三区|
亚洲乱码日产精品bd|
性感美女极品91精品|
日本欧美韩国一区三区|
亚洲成精国产精品女|
青草av.久久免费一区|
狠狠色丁香婷婷综合|
岛国精品在线播放|
在线日韩一区二区|
日韩一区二区三区视频|
欧美成人性福生活免费看|
日韩欧美卡一卡二|
中文字幕精品综合|
亚洲国产日韩在线一区模特|
奇米影视7777精品一区二区|
久久精品免费观看|
成人午夜av影视|
欧美性高清videossexo|
欧美va亚洲va国产综合|
亚洲素人一区二区|
青青草一区二区三区|
91网站最新地址|
欧美大片在线观看|
亚洲一区二区三区四区的|
国内偷窥港台综合视频在线播放|
国产一区激情在线|
欧美日本在线观看|
国产精品国产三级国产普通话99|
亚洲va韩国va欧美va|
成人性生交大合|
日韩一二三四区|
亚洲一区二区三区美女|
国产成人亚洲精品狼色在线|
欧洲一区在线电影|
国产精品美日韩|
国产九九视频一区二区三区|
在线电影欧美成精品|
亚洲视频一二三区|
国产.精品.日韩.另类.中文.在线.播放|
在线观看视频91|
亚洲男人的天堂av|
国产成a人无v码亚洲福利|
日韩欧美不卡一区|
日韩中文字幕区一区有砖一区|
97成人超碰视|
国产欧美综合在线|
精品无码三级在线观看视频|
欧美高清www午色夜在线视频|
一区在线播放视频|
成人一区二区三区中文字幕|
国产亚洲欧美激情|
国产精品一区二区男女羞羞无遮挡|
欧美一级精品在线|
另类中文字幕网|
欧美一级夜夜爽|
免费视频最近日韩|
91精品国产高清一区二区三区|
亚洲一卡二卡三卡四卡五卡|
日本精品视频一区二区|
中文字幕亚洲不卡|
99久久夜色精品国产网站|
国产精品全国免费观看高清
|
国产成人在线观看|
欧美极品美女视频|
成人免费av资源|
亚洲欧洲日本在线|
色狠狠色狠狠综合|
亚洲成人动漫一区|
91精品啪在线观看国产60岁|
午夜av区久久|
欧美mv日韩mv国产|
国产超碰在线一区|
亚洲免费av在线|
3atv一区二区三区|
久久精品国产**网站演员|
久久网站最新地址|
91一区在线观看|
亚洲成在线观看|
精品美女在线播放|
成人网在线免费视频|
亚洲国产乱码最新视频|
欧美videossexotv100|
不卡一区中文字幕|
亚洲图片有声小说|
精品国产一区二区精华|
www.亚洲在线|
天天av天天翘天天综合网
|
国产一区二区在线观看视频|
国产精品全国免费观看高清|
欧美性极品少妇|
国产乱人伦偷精品视频免下载|
国产精品毛片a∨一区二区三区|
欧美色综合影院|
国产中文字幕一区|
亚洲欧美偷拍卡通变态|
欧美一级搡bbbb搡bbbb|
成年人网站91|
久久99久久久久|
亚洲欧美精品午睡沙发|
日韩三级在线免费观看|
91蝌蚪porny|
九色porny丨国产精品|
亚洲精品福利视频网站|
久久精品一级爱片|
7878成人国产在线观看|
99re热视频精品|
国产精品自拍三区|
日日摸夜夜添夜夜添亚洲女人|
国产精品午夜久久|
精品美女在线观看|
欧美妇女性影城|
色94色欧美sute亚洲线路一久|
国产在线不卡视频|
免费美女久久99|
亚洲免费观看在线视频|
国产欧美日韩亚州综合|
欧美www视频|
777色狠狠一区二区三区|
在线免费不卡视频|
91视频精品在这里|
国产激情一区二区三区桃花岛亚洲|
日韩中文字幕亚洲一区二区va在线|
一色屋精品亚洲香蕉网站|
国产网站一区二区|
久久精品人人爽人人爽|
日韩欧美国产电影|
91精品久久久久久久久99蜜臂|
日本精品一级二级|
在线看不卡av|
欧美日韩精品久久久|
欧洲一区二区三区在线|
色婷婷亚洲一区二区三区|
不卡一区中文字幕|
www.视频一区|
av高清久久久|
色综合中文字幕|
91国产成人在线|
色999日韩国产欧美一区二区|
91视频国产资源|
在线视频一区二区三|
欧美综合亚洲图片综合区|
色综合天天性综合|
欧美这里有精品|
欧美另类久久久品|
日韩一二三区视频|
久久精品一区二区三区不卡|
国产精品丝袜一区|
亚洲乱码国产乱码精品精小说
|
三级欧美韩日大片在线看|
三级在线观看一区二区
|
一区二区在线观看免费|
亚洲另类中文字|
五月婷婷欧美视频|
九九国产精品视频|
av电影在线观看完整版一区二区|
播五月开心婷婷综合|
欧美午夜不卡在线观看免费|
这里只有精品视频在线观看|
欧美精品一区二区精品网|
国产精品视频九色porn|
亚洲精品国产高清久久伦理二区|
丝袜亚洲另类丝袜在线|
国产露脸91国语对白|
91麻豆精品视频|
欧美一区二区三区成人|
中文字幕精品在线不卡|
午夜精品一区在线观看|
极品尤物av久久免费看|
色综合久久精品|
欧美va在线播放|
一区二区三区中文在线|
国内欧美视频一区二区|
色偷偷成人一区二区三区91|
欧美一区二区黄|
成人欧美一区二区三区黑人麻豆|
五月天国产精品|
国产99精品视频|
日韩午夜小视频|
亚洲乱码国产乱码精品精98午夜
|
精品一区二区三区的国产在线播放|
国产黄色精品网站|
欧美在线观看一区|
欧美精彩视频一区二区三区|
人人精品人人爱|
日本韩国欧美一区|
中文一区二区在线观看|
日本不卡不码高清免费观看|