Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   TurboDelphi und TMozillaBrowser (https://www.delphipraxis.net/144308-turbodelphi-und-tmozillabrowser.html)

Schwedenbitter 4. Dez 2009 21:07


TurboDelphi und TMozillaBrowser
 
Hallo,

wie der Titel bereits beschreibt, nutze ich TurboDelphi. Jetzt habe ich bereits mit Interesse zur Kenntnis genommen, dass es neben TWebBrowser auch eine Komponente namens TMozillaBrowser gibt. Ich habe hier im Forum mittels der Suche bereits herausgefunden, dass es (theoretisch) genügt, sich einfach z.B. die Datei MozillaControl1712.exe (oder füher) zu besorgen und zu installieren. Anschließend habe man in der Gruppe ActiveX die Komponente.

Leider klappte das nicht. Ich vermute, dass es daran liegt, dass man bei TurboDelphi keine Komponenten Installieren darf. Oder muss das in ein ganz bestimmtes Verzeichnis? Ich habe kein Problem damit, auf die Komponente zur Entwurfszeit zu verzichten und diese zur Laufzeit anzulegen. Nur habe ich leider auch keine Unit gefunden, in der TMozillaBrowser drin steht. Und die Suche hier hat mir auch nicht geholfen.

Kann mir jemand einen Tipp geben?

TWebBrowser kann bestimmte Seiten nicht so darstellen, wie ich sie brauche. Daher wollte ich mal die Alternative von Mozilla probieren. Scheitere aber schon am Finder derselben ...

Gruß, Alex

mkinzler 4. Dez 2009 21:49

Re: TurboDelphi und TMozillaBrowser
 
Hier findest du die Wrapper-Unit
http://www.delphipraxis.net/internal...=934928#934928

Schwedenbitter 4. Dez 2009 22:08

Re: TurboDelphi und TMozillaBrowser
 
Danke! Jetzt lässt es sich kompilieren.

Jetzt habe ich aber das Problem, dass ich bei einem Navigate('irgendwas'); immer die Fehlermeldung "Browser is not in a valid state" bekomme. Ich habe sowohl im Forum als auch bei einer Suchmaschine nachgesehen. Die vermeintliche Lösung, die Mozilla ActiveX Control zu installieren klappt bei mir nicht. Die habe ich schon installiert!

Oder muss das in ein ganz bestimmtes Verzeichnis?
Und wie sieht es dann später aus, wenn ich das Programm auf einem anderen Rechner laufen lassen möchte?
Da wurde ich aus den Suchergebnissen auch nicht wirklich schlau, denn das Installieren der Control scheint es nicht allein zu sein.

Ich habe auch den Code aus der Demo mit eingebaut:
Delphi-Quellcode:
Implementation

{$R *.dfm}

Procedure TFMain.BtnOpenClick(Sender: TObject);
Begin
   With TMozillaBrowser.Create(FMain) Do
      Navigate('www.delphipraxis.net');
End;

Initialization     // <- das und
OleInitialize(nil);

Finalization       // <- das meine ich
OleUninitialize;

End.
Gruß, Alex

Bernhard Geyer 4. Dez 2009 22:16

Re: TurboDelphi und TMozillaBrowser
 
Zitat:

Zitat von Schwedenbitter
Jetzt habe ich aber das Problem, dass ich bei einem Navigate('irgendwas'); immer die Fehlermeldung "Browser is not in a valid state" bekomme. Ich habe sowohl im Forum als auch bei einer Suchmaschine nachgesehen.

Ich habe auch den Code aus der Demo mit eingebaut:[delphi]Implementation ..

Was ist wenn du auch den Parent für das Control zuordnest? Der IE Funktioniert z.B. nur vernünftig mit gültigen Fensterhandle

Zitat:

Zitat von Schwedenbitter
Und wie sieht es dann später aus, wenn ich das Programm auf einem anderen Rechner laufen lassen möchte?[/b] Da wurde ich aus den Suchergebnissen auch nicht wirklich schlau, denn das Installieren der Control scheint es nicht allein zu sein.

Du mußt das ActiveX-Control auch wieder installieren. Man hat also hier eher noch einen Nachteil gegenüber TWebBrowser. Dieser ist überall verfügbar.

Schwedenbitter 4. Dez 2009 22:31

Re: TurboDelphi und TMozillaBrowser
 
Zitat:

Zitat von Bernhard Geyer
Was ist wenn du auch den Parent für das Control zuordnest? Der IE Funktioniert z.B. nur vernünftig mit gültigen Fensterhandle

Wie geht das?
TMozillaBrowser.Parent ist vom Typ IDispatch und nicht TWinControl. Damit kann ich nichts anfangen.

Gruß, Alex

Bernhard Geyer 4. Dez 2009 22:34

Re: TurboDelphi und TMozillaBrowser
 
Zitat:

Zitat von Schwedenbitter
Wie geht das?
TMozillaBrowser.Parent ist vom Typ IDispatch und nicht TWinControl. Damit kann ich nichts anfangen.

Liegt daran das hier das gleiche Parent-Property vom IE nachgebildet wird. Und mit dem Namen "Parent" das Parent-Property der TWinControl-Basisklasse verdeckt wird. Einfach cast nach TWinControl und schon hast du deinen passenden Parent-Typ.

Schwedenbitter 4. Dez 2009 22:52

Re: TurboDelphi und TMozillaBrowser
 
Zitat:

Zitat von Bernhard Geyer
Einfach cast nach TWinControl und schon hast du deinen passenden Parent-Typ.

OK!
Delphi-Quellcode:
Procedure TFMain.FormCreate(Sender: TObject);
Begin
   Mozilla:=TMozillaBrowser.Create(self);
   TWinControl(Mozilla).Parent:=FMain;
End;
Jetzt bekomme ich aber eine Fehlermeldung:
Zitat:

NetscapeDispatchWnd: Firefox.exe - Fehler in Anwendung

Die Anweisung in "0x011c1b0c" verweist auf Speicher in "0x00000000". Der Vorgang
"read" konnte nicht auf dem Speicher durchgeführt werden.

Klicken Sie auf "OK", um ...
Danach kommt dann noch:
Zitat:

Exception EAccessViolation in Modul webbrwsr.dll bei 00001B0C.
Zugriffsverletzung bei Adresse 011D1B0C in Modul 'webbrwsr.dll'. Lesen von Adresse 00000000.
Kommentiere ich die Zuweisung von Parent aus, kommen die Fehler nicht.

Was mache ich denn nun wieder falsch? :wall:

Bernhard Geyer 4. Dez 2009 23:19

Re: TurboDelphi und TMozillaBrowser
 
Schau mal nach ob das Control wirklich von TWinControl abgeleitet ist. Selbst habe ich nur TWebBrowser (TEmbeddedWB) im Einsatz so das ich nur von dort auf den Code im Mozilla-Controll schließe.

Schwedenbitter 5. Dez 2009 09:12

Re: TurboDelphi und TMozillaBrowser
 
Zitat:

Zitat von Bernhard Geyer
Schau mal nach ob das Control wirklich von TWinControl abgeleitet ist. Selbst habe ich nur TWebBrowser (TEmbeddedWB) im Einsatz so das ich nur von dort auf den Code im Mozilla-Controll schließe.

Also:
Delphi-Quellcode:
Type
   TMozillaBrowser = Class(TOleControl)
      End;
   TOleControl = class(TWinControl, IUnknown, IOleClientSite,
      IOleControlSite, IOleInPlaceSite, IOleInPlaceFrame, IDispatch,
      IPropertyNotifySink, ISimpleFrameSite, IServiceProvider)
      End;
Muss mir das was sagen?

Matze 5. Dez 2009 10:03

Re: TurboDelphi und TMozillaBrowser
 
Du bist nicht der einzige, der TMozillaBrowser verwendet. Daher gibt es auch mehrere Themen dazu (Hier im Forum suchenTMozillaBrowser Parent). ;)

Hättest du gesucht, wärst du auf Beiträge gestoßen, die dir zeigen, wie man TMozillaBrowser ein Parent zuweist:

Delphi-Quellcode:
Mozilla := TMozillabrowser.Create(nil);
TControl(Mozilla).Parent := FMain;
Grüße, Matze

Edit: Ich hoffe, das funktioniert so, denn ich habe es nicht getestet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr.
Seite 1 von 2  1 2      

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