線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3528
推到 Plurk!
推到 Facebook!

使用TOleContainer開啟Word的版面問題

答題得分者是:Chance36
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-13 23:04:54 IP:61.56.xxx.xxx 未訂閱
當使用TOleContainer開啟一個Word文件時,應用程式的上方會被Word的工具列佔據,這種情形能夠避免嗎?我希望能做到Word文件及工具列只佔據OleContainer的空間...
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-14 02:08:11 IP:203.204.xxx.xxx 未訂閱
00156 你好     由於OleContainer在Active時竟會佔滿整個Form,連Form上面其他的元件皆被覆蓋,原因不曉得,沒關係!山不轉路轉,將包含OleContainer的Form嵌入到主Form的某個Panel不就好了。     有了概念後,系統架構如下所述:    1.建立主Form ,上面放需要的元件及一個Panel(OleContainer所要顯示的範圍 由Panel來決定)    2.建立OleContainer所屬的Form,放上OleContainer及相關設定,同時將Form 的邊框設為無(顯示時比較好看)     3.在主Form的OnShow事件中
procedure TMainForm.FormShow(Sender: TObject);
begin
  OleForm.Parent := Panel1;  
  OleForm.Align := alClient;
  OleForm.Show;
end;    具體程式範例如下:
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=54763    程式執行畫面如下

_______________________________________ 深藍的魚,祝您好運..........連連 發表人 - chance36 於 2004/08/14 02:10:26
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-14 13:52:24 IP:61.56.xxx.xxx 未訂閱
Chance36您好,感謝您提供的方法。 我實際試驗了一下,卻得到相同的結果:(按下開啟按鈕後...)

版面還是被佔據了。下面是我的程式碼,不知道哪裡有問題:
//主要的表單是Form1,內有OlePanel(TPanel)元件;含OleContainer的OleForm,內有oc(TOleContainer)元件    procedure TForm1.Button1Click(Sender: TObject); //按下開啟按鈕的程式碼
begin
  OleForm:=TOleForm.Create(self);
  OleForm.Parent:=OlePanel;
  OleForm.Align:=alClient;
  OleForm.oc.CreateObject('Word.Document',false);
  OleForm.Show;
  OleForm.oc.AutoActivate:=aaGetFocus;
  OleForm.oc.SetFocus;
end;
另外,我下載您的範例,但是沒辦法解開壓縮... 請指點一下。謝謝!
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-14 14:18:36 IP:61.221.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=52105     發表人 - conundrum 於 2004/08/14 14:43:03
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-15 00:00:02 IP:203.204.xxx.xxx 未訂閱
00156 你好    我把範例改成自解檔了,再次下載試試吧!    _______________________________________ 深藍的魚,祝您好運..........連連
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-16 21:18:28 IP:61.56.xxx.xxx 未訂閱
感謝兩位前輩提供的資訊!    我採用Chance36的方法...不過試了很久,終於發現原先問題所在了...將OleContainer的Form指定到主要Form的Panel以前,一定要先建置好物件(Word.Document),工具列才會內嵌到Panel裡,否則版面仍然會照原來的配置。所以程式碼要改為:
//主要的表單是Form1,內有OlePanel(TPanel)元件;含OleContainer的OleForm,內有oc(TOleContainer)元件    procedure TForm1.Button1Click(Sender: TObject); //按下開啟按鈕的程式碼
begin
  OleForm:=TOleForm.Create(self);
  OleForm.Visible:=false;
  OleForm.Align:=alClient;
  OleForm.oc.CreateObject('Word.Document',false);
  OleForm.Parent:=OlePanel; //這行要在CreateObject之後...
  OleForm.Show;
  OleForm.oc.AutoActivate:=aaGetFocus;
  OleForm.oc.SetFocus;
end;    
一點心得分享
系統時間:2024-06-26 23:39:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!