7 Stimmen

Erstellen von TWebBrowser in Runtime mit Delphi

Ich habe ein TWebBrowser-Objekt, das zur Laufzeit erstellt und im Hintergrund verwendet wird, d.h. nicht sichtbar ist. Das Problem ist, dass Ereignisse wie OnDocumentComplete nicht funktionieren oder nicht in Delphi2009 ausgelöst werden. Irgendein Ratschlag?

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  FWebBrowser:= TWebBrowser.Create(Self);
  FWebBrowser.RegisterAsBrowser:= True;
  FWebBrowser.OnDocumentComplete:= WhenDocIsCompleted;
end;

procedure TfrmMain.WhenDocIsCompleted(ASender: TObject; const pDisp: IDispatch;
  var URL: OleVariant);
begin
  ShowMessage('Doc is completed!');
end;

Gibt es einen wichtigen Unterschied zwischen Navigate und Navigate2? Wie kann ich hier Cookies aktivieren?

Vielen Dank im Voraus.

9voto

tomo7 Punkte 425
TWinControl(FWebBrowser).Parent := Form1;  // Parent property is read-only unless cast

2voto

Stijn Sanders Punkte 34557

Dieses Problem kann auftreten, weil der TWebBrowser intern eng mit dem Handle des übergeordneten Formulars zusammenarbeitet, um Nachrichten von Windows zu erhalten. Versuchen Sie, ein verstecktes Formular mit dem TWebBrowser auf (optional Laufzeit erstellt als gut), und / oder untersuchen Sie, wenn die HandleAllocated und HandleNeeded Methoden Ihnen helfen könnte.

2voto

Ingo Punkte 5017

Aufruf für das OnDocumentComplete-Problem:

WebBrowser1.HandleNeeded;

oder in Ihrem Fall:

FWebBrowser.HandleNeeded;

vor webBrowser.Navigate

1voto

Billiardo Aragorn Punkte 327

Eine Komponente, die perfekt mit Webseiten-Cookies arbeitet, ist TEmbeddedWB von EmbeddedWB und ist kostenlos.

1voto

procedure TForm1.ReCreateBrowser();
begin
    if(WebBrowser <> NIL) then
    begin
       WebBrowser.Stop;
       WebBrowser.Destroy;
    end;

    WebBrowser        := TWebBrowser.Create(Form1);
    TWinControl(WebBrowser).Name   := 'WebBrowser';
    TWinControl(WebBrowser).Parent := Form1; //set parent...can be panel, tabs etc
    WebBrowser.Silent := true;  //don't show JS errors
    WebBrowser.Visible:= true;  //visible...by default true

    //don't set width/heigh/top/left before TWinControl(WebBrowser).Parent := Form1;
    WebBrowser.Top    := 10;
    WebBrowser.Left   := 10;
    WebBrowser.Height := 600;
    WebBrowser.Width  := 800;
    WebBrowser.OnDocumentComplete  := WebBrowserDocumentComplete;
  //WebBrowser.OnNavigateComplete2 := WebBrowserNavigateComplete2;
end;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X