Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Реагируем на щелчок по ссылке в TWebBrowser

01.01.2007

 
 
var
 
Document: IHtmlDocument2;
  V
: Variant;
 
procedure TForm1
.FormCreate(Sender: TObject);
begin
  WebBrowser1
.Navigate('about:blank');
 
while WebBrowser1.Document = nil do
   
Application.ProcessMessages;
 
Document := WebBrowser1.Document as IHtmlDocument2;
end;
 
procedure TForm1
.Button1Click(Sender: TObject);
begin
  V
[0] :='<a href="https://ya.ru">Run</a>';
 
Document.Writeln(PSafeArray(TVarData(v).VArray));
  WebBrowser1
.OleObject.Document.ParentWindow.Scroll(0, 10000000);
end;
 
procedure TForm1
.WebBrowser1BeforeNavigate2(Sender: TObject;
 
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
 
Headers: OleVariant; var Cancel: WordBool);
begin
 
if url <> 'about:blank' then
 
begin
    WebBrowser2
.Navigate(URL);
   
Cancel := True;
 
end;
end;

Автор: Rouse_

Взято из https://forum.sources.ru

 


 
var
 
NavigateTo: Boolean = False;
 
procedure TForm1
.WebBrowser1BeforeNavigate2(Sender: TObject;
 
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
 
Headers: OleVariant; var Cancel: WordBool);
begin
 
if NavigateTo then
 
begin
   
Cancel := True;
    WebBrowser2
.Navigate(URL);
 
end;
end;
 
procedure TForm1
.Button2Click(Sender: TObject);
begin
  WebBrowser1
.Navigate('about:<a href="https://ya.ru">Run</a>');
 
NavigateTo := True;
end;

Автор: s-mike

Взято из https://forum.sources.ru

 

OnNewWindow2
Возникает при попытке открыть документ в новом окне. Если Вы хотите, чтобы документ был открыт в Вашем экземпляре броузера, то Вам нужно создать свой экземпляр броузера и параметру ppDisp присвоить интерфейсную ссылку на этот экземпляр:

 

procedure TFormSimpleWB.WebBrowser1NewWindow2(Sender: TObject;
 
var ppDisp: IDispatch; var Cancel: WordBool);
var
  newForm
:TFormSimpleWB;
begin
  newForm
:= TFormSimpleWB.Create(Application);
  newForm
.Show;
  ppDisp
:= newForm.WebBrowser1.ControlInterface;
end;

 

Автор: -TOXA-

Взято из https://forum.sources.ru