AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWebBrowser - OnNewWindow2
Thema durchsuchen
Ansicht
Themen-Optionen

TWebBrowser - OnNewWindow2

Ein Thema von dizzy · begonnen am 7. Jan 2007 · letzter Beitrag vom 10. Jan 2007
Antwort Antwort
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#1

TWebBrowser - OnNewWindow2

  Alt 7. Jan 2007, 23:16
Hiho zusammen.

Ich brauche in einem Programm tabbed Browsing, und würd das gerne mit dem TWebbrowser realisieren. Das dynamische Erstellen der Browserinstanzen und das Anzeigen auf ebenfalls dynamisch erzeugten Tabsheets klappt soweit wunderbar, jedoch möchte ich gerne das OnNewWindow2-Ereignis verwenden, um darauf hin das neue Fenster auf eine neue Instanz von Tabsheet+Browser umzuleiten.
Prinzipiell sollte es ja eigentlich mit diesem Code der Schweizer klappen (anstelle des Formulars erzeuge ich dort einfach neue Tabsheest und Browserinstanzen, und weise diese an ppDisp zu).

Es wird auch ein neues Sheet erzeugt, dass eine Browser-Kompo enthält, jedoch wird in dem Bereich des neuen Browserclients kein Neuzeichnen ausgelöst, so als würde diese Instanz der Browser-Kompo ständig busy sein.

Erzeuge ich im Code eine neue Kombi aus Sheet und Browser, und nutze Navigate(URL: String), funktioniert das einwandfrei. Daher wäre es durchaus auch eine denkbare Lösung, wenn mir jemand sagen könnte, wie ich zum Zeitpunkt des OnNewWindow2-Events an die Ziel-URL komme (müsste dann ja irgendwie über das ppDisp geschehen denk ich). Dann könnte ich einfach die Aktion canceln, und die o.g. Variante nutzen. Jedoch habe ich dazu in der DP und auch bei den Schweizern keine wirkliche Hilfe gefunden.

Das OnBeforeNavigate2-Event kommt leider nicht in die engere Wahl für diese Funktion, da ich nur via GetAsyncKeyState hinbekommen könnte, dass nur z.B. Ctrl+Klick ein neues Tab öffnen. Dieses Tab soll jedoch nun genau so verfahren, und bekommt den selben Ereignishandler. Hält der User nun die Tasten etwas länger gedrückt, so wird jede Ressource der neuen Seite ebenfalls in einem neuen Tab geöffnet, da jeder Bilddownload und was auch immer ein OnBeforeNavigate2 auslöst. Nun wäre es denkbar, dieses Ereignis erst zuzuweisen, wenn OnDownloadComplete eingetreten ist, aber zu viele Webseiten brauchen zu lange um komplett fertig geladen zu sein, so dass man erst unangenehm lange darauf warten müsste, aus einem neuen Tab heraus wieder ein neues zu öffnen. Dilemma deluxe

Watt nu? ^^
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: TWebBrowser - OnNewWindow2

  Alt 8. Jan 2007, 23:49
Mh, gäbe es u.U. andere Browser-Kompos, die sich ähnlich einfach handhaben lassen, bzw. eine brauchbare API besitzen? Vorzugsweise natürlich nativ, im Notfall halt auch nen ActiveX o.ä..
Wert lege ich lediglich auf oben beschriebenes, und auf die Möglichkeit eigene Hotkeys einsetzen zu können (was beim TWebBrowser ja nur über Umwege, aber zumindest möglich ist). Ideologische Präferenzen stelle ich mal ganz weit hinten an 8). Hat da jemand Erfahrungswerte, bzw. Empfehlungen?

Ich kenne zwar die Mozilla Kompo, aber ich habe nur das Wort ActiveX in Kombination mit "noch nicht ganz vollständig" gelesen, und schon ist mir die Lust daran vergangen. Ist das Teil trotzdem soweit einsetzbar? (Kanns wegen kompletter Neuinstallation grad leider nicht ausprobieren, und evtl. gibts ja schon Erfahrungswerte.)

Vielen Dank schon mal!
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: TWebBrowser - OnNewWindow2

  Alt 9. Jan 2007, 10:45
Hallo Fabian,

Zitat von dizzy:
... jedoch wird in dem Bereich des neuen Browserclients kein Neuzeichnen ausgelöst, so als würde diese Instanz der Browser-Kompo ständig busy sein. ...
das kann ich mit meinem eigenem Code nicht nachvollziehen.

Zitat von dizzy:
... Daher wäre es durchaus auch eine denkbare Lösung, wenn mir jemand sagen könnte, wie ich zum Zeitpunkt des OnNewWindow2-Events an die Ziel-URL komme (müsste dann ja irgendwie über das ppDisp geschehen denk ich). ...
Die Ziel-Url erhältst du beim Ereignis OnBeforeNavigate2() - das wird aber erst später gefeuert.

Was du mit Ctrl-Click meinst habe ich nicht so recht verstanden - mit Shift-Click öffnet der WebBrowser einen Link in einem neuen Fenster. Ich habe dir ein Programm-Skelett angehängt. Vielleicht hilft dir das weiter.

Grüße vom marabu
Angehängte Dateien
Dateityp: zip webtab_982.zip (2,7 KB, 42x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: TWebBrowser - OnNewWindow2

  Alt 10. Jan 2007, 00:52
Aloah Achim! Danke dir für deinen Beispielcode. Ich hoffe, dass ich die Tage meinen PC wieder soweit mit Software vollgequetscht habe, dass ich darunter auch wieder mein Delphi finde, um weiter machen zu können...

Die wichtige Methode ist denke ich diese:
Delphi-Quellcode:
function TDemoForm.NewBrowserTab(pc: TPageControl): TTabSheet;
var
  wb: TWebBrowser;
begin
  Result := TTabSheet.Create(pc);
  Result.PageControl := pc;
  wb := TWebBrowser.Create(Result);
  wb.Align := alClient;
  Result.InsertControl(wb);
  wb.OnNewWindow2 := NewWindow2;
  wb.OnBeforeNavigate2 := BeforeNavigate2;
end;
Das hatte ich soweit sehr ähnlich, jedoch alles direkt in meiner OnNewWindow2-Methode stehen. Die 2 Unterschiede: Ich habe OnBeforeNavigate2 nicht angefasst (deine Variante tut ja auch nichts, was mit meinem Problem zu tun haben könnte denke ich), aber die Zeile 9 ist mir neu! Das könnte u.U. das Problem bei mir lösen. Ziemlich wahrscheinlich sogar Davon haben die Schweizer aber auch nix gesagt *grummel*

Zu der Sache mit dem Ctrl-Klick: Das was ein Beispiel. Ich wollte gern, dass ein Link in einem neuen Tab geöffnet werden kann, wenn eine beliebige aber bestimmte Kombination an Tasten beim Click gedrückt sind. Dafür nun Shift-Click, sprich im neuen Fenster öffnen zu missbrauchen, reicht mir aber vollkommen.

In der Hoffnung, dass es das ist, einen heissen Dank! Ansonsten sehen wir uns hier wieder

Freundliche Grüße
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 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