• 点击TWebBrowser中的超级链接不在新的IE窗口打开


    如果是用新窗体打开,而不是用IE打开,简单一点:(From MSDN)

    procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
    var ppDisp: IDispatch; var Cancel: WordBool);
    var
    frmWB:TForm1;
    begin
    frmWB := TForm1.Create(Application);//注意,这里Self和Application、nil结果不同...
    
    frmWB.WebBrowser1.RegisterAsBrowser := TRUE;
    ppDisp := frmWB.WebBrowser1.OleObject;
    frmWB.Visible := TRUE;
    end;
    

    如果是用当前WebBrowser打开,可以这样:(为描述清楚,列出了我的整个单元)

    unit Unit1;
    
    interface
    
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, OleCtrls, SHDocVw, StdCtrls;
    
    type
    TForm1 = class(TForm)     Button1: TButton;     WebBrowser1: TWebBrowser;     procedure Button1Click(Sender: TObject);     procedure WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch;       var Cancel: WordBool);     procedure tempWBBeforeNavigate2(Sender: TObject;       const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,       Headers: OleVariant; var Cancel: WordBool);     procedure WebBrowser1DocumentComplete(Sender: TObject;       const pDisp: IDispatch; var URL: OleVariant);
    private     { Private declarations }
    public     { Public declarations }
    end;
    
    var
    Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    var
    tempWB : TWebBrowser;//临时TWeb
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Self.WebBrowser1.Navigate('http://news.baidu.com);//这个没话可说,访问默认页面,随便点击一个新闻即可出发新窗口浏览事件:NewWindow2
    end;
    
    procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
    var ppDisp: IDispatch; var Cancel: WordBool);
    begin
    if not Assigned(tempWB) then tempWB := TWebBrowser.Create(Self);
    tempWB.OnBeforeNavigate2 := Self.tempWBBeforeNavigate2;
    ppDisp := tempWB.OleObject;
    end;
    
    procedure TForm1.tempWBBeforeNavigate2(Sender: TObject;//自定义新窗口弹出前的代码
    const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
    Headers: OleVariant; var Cancel: WordBool);
    begin
    Self.WebBrowser1.Navigate(Url);
    Cancel := True;
    end;
    
    procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
    const pDisp: IDispatch; var URL: OleVariant);
    begin
    if Assigned(tempWB) then FreeAndNil(tempWB);
    end;
    
    end.
    
  • 相关阅读:
    sql经典语句大全
    经典SQL语句大全
    Bat命令学习
    [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
    配置WebSite的IIS时遇到的问题与解决方法
    数据库SQL优化大总结之 百万级数据库优化方案
    数据库索引以及优化
    搭建android开发环境
    SQL2008根据日志恢复
    WebService处理大数据量数据
  • 原文地址:https://www.cnblogs.com/delphi7456/p/1934117.html
Copyright © 2020-2023  润新知