飘摇客:
我想执行的是控件默认的菜单的某一项,不是自定义的菜单。
>> 我试了试,没有错误,应该试可以打印的吧。
WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT, EmptyParam, EmptyParam);
if WebBrowser1.QueryStatusWB(OLECMDID_PRINTPREVIEW) = 3 then
WebBrowser1.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT, EmptyParam, EmptyParam); //打印预览,IE5.5以上版本
打印正常,可是 ADOQuery 出错。
[red]我说说我的原意[/red]:我开始本是用上面的方法打印,可是ADOQuery出错;而选择在TWebBrower控件
上点右键时弹出的菜单中的“打印”正常,而且ADOQuery不出错,所以我才想要模拟用户
选择控件右键菜单中的一项。
下面是我新建的一个项目:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, ADODB, OleCtrls, SHDocVw;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
with Adoquery1 do
Begin
Close;
Sql.clear;
sql.Add('Select * from SysSetting ');
Open;
Close;
End;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
WebBrowser1.Navigate('d:/empty.htm');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if WebBrowser1.QueryStatusWB(OLECMDID_PRINTPREVIEW) = 3 then
WebBrowser1.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT, EmptyParam, EmptyParam);
end;
end.
只要点击button3 之后,再点击button1 ,就会出错:
“参数类型不正确,或不再可以接受的
范围之内,或与其它参数冲突”
感谢 飘摇客 帮助!!!