掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
タブ式ブラウザーでポップアップの[閉じる]ボタンを使うとエラー。回避方法は? (ID:44971)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
環境はWindows7 Delphi6Personalです。 EmbeddedWBコンポーネントを使ってタブブラウザを作成しています。 下記はテストしている最小限のコードです。 実験:ポップアップ画面に「閉じる」ボタンのある適当なサイトを開く。 下記の例では 画面最下部の「NEXT」→「ログイン」→「ログアウト」→「閉じる」ボタン。 こののち、タブを削除すると 「 OLEコントロールのウィンドウハンドルの取得に失敗しました。」 というエラーででます。これを回避したいのですが NeweWindow3でいろいろトライしましたが能力不足で解決できません。 WebBrowserでもほぼ同様の現象が出ます。よろしくご指導ください。<(_ _)> uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ExtCtrls, OleCtrls, EmbeddedWB; type TIETabSheet = class(TTabSheet) private procedure EmbeddedWB1NewWindow2(Sender: TObject;var ppDisp: IDispatch; var Cancel: WordBool); public EmbeddedWB1 : TEmbeddedWB; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; TForm1 = class(TForm) PageControl1: TPageControl; Panel1: TPanel; Button1: TButton;//タブ作成ナビゲート Button2: TButton;//タブ削除 procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} //--------------------TIETabSheetクラス イベント-------- {IETabSheet} procedure TIETabSheet.EmbeddedWB1NewWindow2(Sender: TObject;var ppDisp: IDispatch; var Cancel: WordBool); var IETab:TIETabSheet; begin IETab := TIETabSheet.Create(Form1.PageControl1); IETab.Parent := Form1.PageControl1; IETab.PageControl := Form1.PageControl1; Form1.PageControl1.ActivePage := TTabSheet(IETab); ppDisp := IETab.EmbeddedWB1.Application; end; constructor TIETabSheet.Create(AOwner: TComponent); begin inherited; EmbeddedWB1 := TEmbeddedWB.Create(self); TOleControl(EmbeddedWB1).Parent := Self; EmbeddedWB1.Align := alClient; EmbeddedWB1.OnNewWindow2 := EmbeddedWB1NewWindow2; end; destructor TIETabSheet.Destroy; begin EmbeddedWB1.Free; inherited; end; { TForm1 } procedure TForm1.Button1Click(Sender: TObject);//新規タブ作成&ナビゲート var IETab:TIETabSheet; begin IETab := TIETabSheet.Create(PageControl1); IETab.Parent := PageControl1; IETab.PageControl := PageControl1; PageControl1.ActivePage := TTabSheet(IETab); IETab.EmbeddedWB1.Navigate('http://www.ntt-east.co.jp/line-info/consent.html'); end; procedure TForm1.Button2Click(Sender: TObject);//タブの削除 begin TIETabSheet(Form1.PageControl1.Pages[PageControl1.ActivePageIndex]).Free; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.