- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ActiveX, OleCtrls, SHDocVw;
- const
- DISPID_NEWWINDOW3 = 273;
- type
- TWebBrowserNewWindow3 = procedure(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool;
- dwFlags: Longint; const bstrUrlContext: WideString; const bstrUrl: WideString) of object;
- TWebBrowser = class(SHDocVw.TWebBrowser)
- private
- FOnNewWindow3: TWebBrowserNewWindow3;
- protected
- procedure InvokeEvent(ADispID: TDispID; var AParams: TDispParams); override;
- public
- property OnNewWindow3: TWebBrowserNewWindow3 read FOnNewWindow3 write FOnNewWindow3;
- end;
- type
- TForm1 = class(TForm)
- WebBrowser1: TWebBrowser;
- procedure FormCreate(Sender: TObject);
- private
- procedure WebBrowserNewWindow3(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool;
- dwFlags: Longint; const bstrUrlContext: WideString; const bstrUrl: WideString);
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- { TWebBrowser }
- procedure TWebBrowser.InvokeEvent(ADispID: TDispID; var AParams: TDispParams);
- begin
- if (ADispID = DISPID_NEWWINDOW3) and Assigned(FOnNewWindow3) then
- Begin
- FOnNewWindow3(Self, AParams.rgvarg^[4].pdispVal^,
- AParams.rgvarg^[3].pbool^, AParams.rgvarg^[2].lVal,
- WideString(AParams.rgvarg^[1].bstrVal), WideString(AParams.rgvarg^[0].bstrVal));
- end
- else
- inherited;
- end;
- { TForm1 }
- procedure TForm1.FormCreate(Sender: TObject);
- const
- URL = 'http://www.w3schools.com/;
- begin
- WebBrowser1.OnNewWindow3 := WebBrowserNewWindow3;
- WebBrowser1.Navigate(URL);
- end;
- procedure TForm1.WebBrowserNewWindow3(ASender: TObject; var ppDisp: IDispatch;
- var Cancel: WordBool; dwFlags: Longint; const bstrUrlContext, bstrUrl: WideString);
- begin
- Cancel := True;
- ShowMessage(bstrUrl);
- end;
- end.
Source
Немає коментарів:
Дописати коментар