全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1249
推到 Plurk!
推到 Facebook!

如何用delphi在word中创建一个按钮!

答題得分者是:william
reebokmonkey
一般會員


發表:44
回覆:73
積分:23
註冊:2003-08-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-15 18:48:55 IP:61.149.xxx.xxx 未訂閱
请问!如何用delphi中在word中创建一个按钮!我在一本叫"delphi深度探索"的书中看见有例程可是最关键的添加按钮的语句出错了 BtnIntf := DICommandBar.Controls.Add(msoControlButton, EmptyParam, EmptyParam, EmptyParam, 1); 错误信息是参数错误!查了好多书都没看见关于这个方法的资料! 如果那位老兄知道在那能找到上面资料或这有其它的办法用delphi中在word中创建一个按钮.我将感激不禁/
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-15 19:32:07 IP:202.39.xxx.xxx 未訂閱
http://groups.google.com.tw/groups?hl=zh-TW&lr=&ie=UTF-8&oe=UTF-8&th=e46b078e13630075&rnum=2 http://groups.google.com.tw/groups?q="Controls.Add" + word + delphi&hl=zh-TW&lr=&ie=UTF-8&oe=UTF-8&selm=VA.00000573.0058118d@cableinet.co.not-this-bit.uk&rnum=4 http://groups.google.com.tw/groups?q="Controls.Add" + word + delphi&hl=zh-TW&lr=&ie=UTF-8&oe=UTF-8&selm=VA.00001046.0061f31e@cableinet.co.not-this-bit.uk&rnum=8 http://groups.google.com.tw/groups?q="Controls.Add" + word + delphi&hl=zh-TW&lr=&ie=UTF-8&oe=UTF-8&selm=VA.00000fef.00ce4f21@cableinet.co.not-this-bit.uk&rnum=10 http://groups.google.com.tw/groups?q="Controls.Add" + word + delphi&start=10&hl=zh-TW&lr=&ie=UTF-8&oe=UTF-8&selm=VA.00000807.00356688@cableinet.co.not-this-bit.uk&rnum=11 --- --<-<-<@
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-16 10:57:27 IP:210.3.xxx.xxx 未訂閱
reebokmonkey
一般會員


發表:44
回覆:73
積分:23
註冊:2003-08-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-18 11:58:43 IP:61.149.xxx.xxx 未訂閱
在 http://www.delphi32.co.yu/preuzeti_tekstovi/delphi_in_the_office.htm 中当执行到 BtnIntf := DICommandBar.Controls.Add(msoControlButton,EmptyParam,EmptyParam,EmptyParam,True) as CommandBarButton; 时,说什么参数错误,看了一些资料但是和我的都一样可是我还是不行,不知道为什么,help me!!!
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-18 12:19:06 IP:147.8.xxx.xxx 未訂閱
It expects all parameters as OleVariant.    DICommandBar.Controls.Add(msoControlButton,EmptyParam,EmptyParam,EmptyParam,msoTrue)
reebokmonkey
一般會員


發表:44
回覆:73
積分:23
註冊:2003-08-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-18 13:07:21 IP:61.149.xxx.xxx 未訂閱
william: 你好!非常感谢你能回答我的问题.以下是我OnStartupComplete事件中的全部代码!按照你的方法该了可还是不行,不知是不是我其它的地方写错了. procedure TAddIn.OnStartupComplete(var custom: PSafeArray); var MenuIntf, BtnIntf :CommandBarControl; i : integer; ToolsBar : CommandBar; EmptyParam:OleVariant; begin DICommandBar := nil; for i := 1 to WordApp.CommandBars.Count do begin if (WordApp.CommandBars.Item[i].Name = 'Delphi Informant') then DICommandBar := WordApp.CommandBars.Item[i]; end; // see if we alreadt registered the command bar with Word if (Not Assigned(DICommandBar)) then begin DICommandBar := WordApp.CommandBars.Add('Delphi Informant',msoBarTop , False, True); DICommandBar.Set_Protection(msoBarNoCustomize); end; if (DICommandBar.Controls.Count > 0) then BtnIntf := DICommandBar.Controls.Item[1] else BtnIntf := DICommandBar.Controls.Add(msoControlButton,EmptyParam,EmptyParam,EmptyParam,msoTrue); DIBtn := TButtonServer.Create(nil); DIBtn.ConnectTo(BtnIntf as _CommandBarButton); DIBtn.Caption := 'Delphi Test'; DIBtn.Style := msoButtonCaption; DIBtn.Visible := true; DIBtn.OnClick := TestClick; DICommandBar.Set_Visible(true); ToolsBar := WordApp.CommandBars['Tools']; MenuIntf := ToolsBar.FindControl(EmptyParam, EmptyParam, 'DIMenu', EmptyParam, EmptyParam); if (not Assigned(MenuIntf)) then MenuIntf := ToolsBar.Controls.Add(msoControlButton, EmptyParam, EmptyParam, EmptyParam, EmptyParam); DIMenu := TButtonServer.Create(nil); DIMenu.ConnectTo(MenuIntf as _CommandBarButton); DIMenu.Caption := 'Delp&hi Menu'; DIMenu.ShortcutText := ''; DIMenu.Tag := 'DIMenu'; DIMenu.Visible := true; DIMenu.OnClick := MenuClick; end;
reebokmonkey
一般會員


發表:44
回覆:73
積分:23
註冊:2003-08-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-18 13:11:40 IP:61.149.xxx.xxx 未訂閱
我用的是delphi6想在word2000中创建一个按钮! 按照你的方法该了后还是在执行到 BtnIntf := DICommandBar.Controls.Add(msoControlButton,EmptyParam,EmptyParam,EmptyParam,msoTrue); 处说:参数错误!
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-18 14:08:23 IP:147.8.xxx.xxx 未訂閱
Then I think you need a real OleVariant, e.g.
var
    oTrue: OleVariant;
...
oTrue := True;
BtnIntf := DICommandBar.Controls.Add(msoControlButton,EmptyParam,EmptyParam,EmptyParam,oTrue);
or simply pass an EmptyParam to it: BtnIntf := DICommandBar.Controls.Add(msoControlButton,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
reebokmonkey
一般會員


發表:44
回覆:73
積分:23
註冊:2003-08-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-19 11:15:49 IP:61.149.xxx.xxx 未訂閱
william: 斕疑!扂珨羲宎憩岆涴欴釬腔!褫岆祥俴!祥眭斕遜衄羶衄[坳腔域楊.
reebokmonkey
一般會員


發表:44
回覆:73
積分:23
註冊:2003-08-06

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-08-19 11:27:14 IP:61.149.xxx.xxx 未訂閱
william: 你好!我一开始就是按照上面的方法做的!可是也不行,不知道你还有没有其它的方法.
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-08-19 12:27:01 IP:147.8.xxx.xxx 未訂閱
reebokmonkey
一般會員


發表:44
回覆:73
積分:23
註冊:2003-08-06

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-08-19 14:37:58 IP:61.149.xxx.xxx 未訂閱
问题已经解决了william谢谢你的帮助.
系統時間:2024-05-09 17:46:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!