初学delphi 想实现仿IE的选项卡功能 
自己乱写了程序 登录+主窗体
登录成功后显示主窗体 主窗体中是WebBrowser一个网页、网页内是超链接列表,点击任意超链 弹出新IE
不想弹出IE想实现类似ie选项卡,
目前是登录成功后 弹出主窗体新建pagecontrol 
主窗体代码
procedure TFrmMain.FormCreate(Sender: TObject);
var
  lsweb:TWebBrowser;
begin
    sheet:=TTabSheet.Create(Self);
    sheet.PageControl:=PageControl1;
    sheet.Caption:='空白页';
    PageControl1.ActivePageIndex:=PageControl1.PageCount-1;
    lsweb:=TWebBrowser.Create(Self);
    lsweb.Align:=alClient;
    lsweb.ParentWindow:=sheet.Handle;
    lsweb.Navigate('http://www.baidu.com');end;procedure TFrmMain.MainNewWindow2(Sender: TObject; var ppDisp: IDispatch;
  var Cancel: WordBool);
var
  lsweb:TWebBrowser;
  nNew:Integer;
beginif NewWinOk=True then begin
  NewWinOk:=False;
  with TTabSheet.Create(PageControl1) do begin
    PageControl := PageControl1;
    ShowHint:=False;
    Caption := '空白页';
  end;
    nNew:=PageControl1.PageCount-1;
  //创建TWebBrowser控件
  lsweb:=TWebBrowser.Create(self);
  with lsweb do begin    Align := alClient;
    Visible:=True;
    OnNewWindow2 := MainNewWindow2;
    OnTitleChange:=MainTitleChange;
  end;
  PageControl1.ActivePageIndex:=nNew;
  TWinControl(lsweb).Parent:=PageControl1.Pages[nNew];     //PageControl1.ActivePage;
  ppDisp:=lsweb.DefaultDispatch;
  NewWinOk:=True;
  end;end;就是不知道后面怎么写了 如何能让主窗体的WebBrowser内网页链接点击后建立新选项卡,
能否给个实例或源码学习一下,本人初学菜鸟 谢谢 

解决方案 »

  1.   

    主窗体代码更改了一下
    procedure TFrmMain.FormCreate(Sender: TObject);
    var
    url: OleVariant;
    begin;TS := TTabSheet.Create(self);
    TS.PageControl := PageControl;WebBrowser := TWebBrowser.Create(self);
    WebBrowser.Align := alClient;
    TS.InsertControl(WebBrowser);
    Ts.Caption := '新建页面';
    PageControl.ActivePage := TS;
    url:='http://www.baidu.com';
    WebBrowser.Navigate2(url); //初始化WebBrowser为打开空白页面{===========为完成多页浏览的初始化=========}
    WBDocumentComplete := WebBrowser.OnDocumentComplete;
    WBNewWindow2 := WebBrowser.OnNewWindow2;
    end;procedure TFrmMain.WebBrowserNewWindow2(Sender: TObject; var ppDisp: IDispatch;var Cancel: WordBool);
    begin
    {========多页面部分=======}
    TS := TTabSheet.Create(self);
    TS.PageControl := PageControl;WB := TWebBrowser.Create(self);
    WB.Align := alClient;
    TS.InsertControl(WB);Ts.Caption := WB.GetNamePath;
    PageControl.ActivePage := TS;ppDisp := WebBrowser.Application;
    end;工程
    program SysLogin;uses
      Forms,
      Frm_login in 'Frm_login.pas' {FrmLogin},
      Frm_Main in 'Frm_Main.pas' {FrmMain},
      DMUnit in 'DMUnit.pas' {DM: TDataModule};{$R *.res}
    var
      FrmLogin: TFrmLogin;
    begin
      Application.Initialize;
      Application.CreateForm(TDM, DM);
      Application.CreateForm(TFrmMain, FrmMain);
      FrmLogin:=TFrmLogin.Create(nil);
      try
        FrmLogin.ShowModal;
      Finally
        FrmLogin.Free;
      end;
      Application.Run;
    end.
    因为是主窗体,运行时候先运行这个窗体 的TFrmMain.FormCreate 然后弹出登录框,登录验证成功后自动关闭登陆框,显示出这个主窗体,点击窗体内连接 已然弹出新IE浏览器 
    脑袋大了~~!!~!~!怎么办啊 怎么让其在新的选项卡中出现呢
      

  2.   


    希望这个例子对你有帮助
    http://blog.csdn.net/simonhehe/article/details/8483582