討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 會設計+會程式=頂尖前端工程師
[ 回上頁 ] [ 討論區發言規則 ]
BCB中如何利用ole控制Word中的文字方塊產生,並輸入字?
更改我的閱讀文章字型大小
作者 : chinch53(cc)
[ 貼文 4 | 人氣 1159 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/11/16 上午 10:52:06
word

    ActiveDocument.Shapes("Text Box 14").Select
    ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, 180#, _
     153#, 99#, 18#).Select
    Selection.ShapeRange.TextFrame.TextRange.Select
    Selection.Collapse
    Selection.TypeText Text:="test textbox"
    Selection.ShapeRange.Select
    ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, 333#, _
     153#, 99#, 18#).Select
    Selection.ShapeRange.TextFrame.TextRange.Select
    Selection.Collapse
    Selection.TypeText Text:="test text2"


BCB:

Variant V,Vdocuments,Vdocument,Vactive,vshape

V= CreateOleObject("Word.Application");
Vdocuments= V.OlePropertyGet("Documents");
     Vdocuments.OleFunction("Add");
     Vactive=V.OlePropertyGet("ActiveDocument");
     vshape = Vactive.OlePropertyGet("Shapes");
     vshape.OleFunction("AddTextbox",1,30,20,200,20);
….想將字串填入Textbox內,試了好多方法仍無法成功,請教各位高手了,謝謝!
作者 : monsterr(monster)
[ 貼文 23 | 人氣 2360 | 評價 70 | 評價/貼文 3.04 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人chinch53註記此篇回應為最佳解答 2007/11/18 上午 03:47:52
我是這麼做的...
 Variant WordApp,WordDocuments, ActiveDoc,Shape;
  Variant TextBox,TextFrame;

  WordApp= CreateOleObject("Word.Application");
  WordApp.OlePropertySet("Visible", true);
  WordDocuments= WordApp.OlePropertyGet("Documents");
  WordDocuments.OleFunction("Add");
  ActiveDoc=WordApp.OlePropertyGet("ActiveDocument");

  Shape = ActiveDoc.OlePropertyGet("Shapes");
  TextBox =Shape.OleFunction("AddTextbox",1,30,20,200,20);
  TextFrame = TextBox.OlePropertyGet("TextFrame"); //取得 TextFrame 物件
  TextFrame.OlePropertySet("TextRange", "Test"); //設定文字方塊的內容
  ......

作者 : chinch53(cc)
[ 貼文 4 | 人氣 1159 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/11/18 下午 12:07:58
非常感恩!我試了可以做到,可否請教有關BCB 對word ole的控制,有哪些書籍或相關資料可找?另word Textbox的邊框如何隱藏?
作者 : monsterr(monster)
[ 貼文 23 | 人氣 2360 | 評價 70 | 評價/貼文 3.04 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/11/18 下午 02:02:52

>非常感恩!我試了可以做到,可否請教有關BCB 對word ole的控制,有哪些書籍或相關資料可找?另word Textbox的邊框如何隱藏?

首先謝謝您給的評價點數, 這是我第一次在這埵^答問題, 當然也是第一次得到點數, 真高興...
其實, 我對使用 BCB 控制 Ole 的瞭解主要是從網站上的爬來的(我是初學者,一星期前因為需要才開始學的), 因此無法介紹參考書籍. 至於參考網站, 在各大搜尋引擎輸入"BCB" "OLE" 或外加"WORD" 應該可以找到一堆.
http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=20520
這是其中一個網頁.
關於可對 word ole 進行的控制, 最完整的應該是直接參考 Word VBA 的 online Help, 從瞭解各個物件之間的關係著手, 一層一層地取出(OlePropertyGet)物件或設定其屬性(OlePropertySet), 或執行其方法(OleFunction).
至於隱藏Textbox 的邊框, 在上面的例子後面加上下面的程式碼:
  Variant Line;
  Line = TextBox.OlePropertyGet("Line");
  Line.OlePropertySet("Visible",false);
作者 : chinch53(cc)
[ 貼文 4 | 人氣 1159 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/11/18 下午 08:34:45
我用下列方式也可行耶!
ShapeLine=TextBox.OlePropertyGet("Line");
ShapeLine.OlePropertySet("Transparency",1);
作者 : chinch53(cc)
[ 貼文 4 | 人氣 1159 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/11/18 下午 08:50:08
我對用BCB Ole方式控制word 也是初學者, word何時要用OlepropertyGet何時要用OlepropertySet,哪些物件要用OlepropertyGet哪些物件要用Olepropertyset,還有Oleprocedure及Olefunction使用時機及使用參數常讓我傷透腦筋,老是用try error方式在debug,真是累死我了!
作者 : monsterr(monster)
[ 貼文 23 | 人氣 2360 | 評價 70 | 評價/貼文 3.04 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/11/19 上午 08:41:06

原則上:
OlePropertyGet:用於取得屬性資料的值或物件(其實物件也算是上層物件的一個屬性)
OlePropertySet:用於設定屬性資料的值
OleFunction:執行物件的某一個方法(method), 也就是function.
也就是說:
在 Help 看到被列在屬性(Propery)的, 用OlePropertyGet和OlePropertySet. 被列在方法(method)的, 用OleFunction
至於 OleProcedure則是執行Word VBA 已經寫好的副程式(大多是配合Word 的指令), 但要用 Variant::CreateeObject("Word.Basic")建立物件. 例如:下面的二段程式做的事相同的事.
  1)使用Ole物件操作
  Variant WordApp,WordDocuments;
  WordApp= CreateOleObject("Word.Application");
  WordApp.OlePropertySet("Visible", true); //顯示 Word
  WordDocuments= WordApp.OlePropertyGet("Documents");
  WordDocuments.OleFunction("Add"); //新增一個文件

  2)使用VBA副程式(這段程式碼是某個網站看來的, 請原諒我忘了出處是哪...)
  Variant wordDocument;
  wordDocument=CreateOleObject("Word.Basic"); //*和上一段建立的物件不同
  wordDocument.Exec(Procedure("AppShow")); //顯示 Word
  wordDocument.Exec(Procedure("FileNew")<< "Normal"); //新增一個文件
  


 板主 : 徵求中
 > C++ Builder - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - C++ Builder - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
C++ Builder
1 windblown 5420 
2 Raynor 3120 
3 阿泰 2980 
4 workman 1650 
5 Linkin 1360 
6 CrazyStar 1260 
7 青衫 1160 
8 jonay 1080 
9 charlie 900 
10 小呆 770 
C++ Builder
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2014 程式設計俱樂部 http://www.programmer-club.com.tw/
0.078125