Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi WebBrowser im Pagekontrol mit Tabs = konflikt mit javascript (https://www.delphipraxis.net/87932-webbrowser-im-pagekontrol-mit-tabs-%3D-konflikt-mit-javascript.html)

gallstone 7. Mär 2007 15:19


WebBrowser im Pagekontrol mit Tabs = konflikt mit javascript
 
Hallo Leute ich habe hier folgende proceduren die mir einen WebBrowser ermölichen welcher in Tabs arbeitet. Ich brauche dies als Funktion in einem Programm.

Delphi-Quellcode:

//damit kein IE Fenster bei externem link aufpopt.

procedure TForm1.NewWindow(Sender: TObject;var ppDisp: IDispatch; var Cancel: WordBool);
var
  Tabsheet: TTabsheet;
  Browser: TWebBrowser;
begin
  //Neues TabSheet mit WebBrowser erstellen
  Taberzeugen(nil);
  //Aktives TabSheet finden
  TabSheet:= Form1.PageControl1.ActivePage;
  //Anfrage umleiten (neue seite im neuen webbrowserdentseranzeigen)
  ppDisp:= (PageControl1.ActivePage.Controls[0] as TWebBrowser).DefaultInterface;
end;

procedure TForm1.Taberzeugen(Sender: TObject);
var
  NewTab : TTabSheet; //variable, die unser neues Tabsheet seinwird
  NewWeb : TWebBrowser;//auf dem tabsheet wird dann diesesbrowserfenster liegen, beide werden zur laufzeit erzeugt
begin
  //TabSheet erstellen
  NewTab:= TTabSheet.Create(Form1.PageControl1);
  //TabSheet ist sichtbar
  NewTab.Visible := True;
  //Beschriftung übergeben
  NewTab.Caption := '';
  //TabSheet an das PageControl übergeben
  NewTab.PageControl := Form1.PageControl1;
  //Aktive Seite des PageControls auf das gearde erstellt TabSheetsetzen
  Form1.PageControl1.ActivePage:= NewTab;
  //neues Browser Objekt erstellen
  NewWeb:=TWebBrowser.Create(NewTab);
  //Browser Objekt an das TabSheet übergeben
  TWinControl(NewWeb).parent := NewTab;
  //Browser Ausrichtung festlegen
  NewWeb.Align:= alClient;
  //ggf. weitere Ereignisse für das neue WebBrowser Objektfestlegen
  NewWeb.OnNewWindow2:= NewWindow;
  //WebBrowser sichtbar
  NewWeb.Visible := True;
end;
und schließlich startet das ganze mit

Delphi-Quellcode:
  Taberzeugen(nil);
  (PageControl1.ActivePage.Controls[0] as TWebBrowser).Navigate(startseite);
das klappt alles prima, surfen geht eigentlich problemlos.

viele seiten arbeiten aber mit javascript und es wäre schön wenn mein browser dies auch unterstützen würde. (man kann in den IE sicherheitsregeln auch java abschalten aber das gefäfllt mir nicht)
http://www.rhoen.de/cgi-bin/WebObjec....1.2.1.1.1.1.0

auf dieser seite kann man sich bilder vergrößern lassen und es popt ein fenster auf, das macht mein browser in einem neuen tab. wenn nun aber der nutzer auf schließen klickt schließt sich normaler weise das fenster. bei mir aber TWebBrowser auf PageControl1.ActivePage.Controls[0]. so das die aktive seite nun blank ist. damit schießt sich mein proggie bei jeglicher eingabe ab mit der bemerkung "fenster-handle des ole-objekts nicht verfügbar."

wie kann ich das abfangen? das dann in solchen fällen gleich das ganze tab schließen kann. ohne das der Nutzer eine eingabe machen kann. normal würde ich ja einfach auf die komponente klicken und in den ereignissen nachschaun. aber das geht hier ja nicht.

ich hoffe mir kann einer helfen.
danke im vorraus.

mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz