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