Problem TEvsWebBrowser
Problem TEvsWebBrowser
Guten Morgen zusammen,
ich bin neu in der Community und auch in Lazarus. Ich habe sehr lange Delphi programmiert, bin aber nun "nur" noch Hobbyprogrammierer und von der aktuellen DELPHI-Preispolitik abgeschreckt worden.
Nun zu meiner Frage ich habe die Lazarus Actice X und die TLB vom IE eingebunden. Nun möchte ich den Beispielcode von der Seite http://wiki.freepascal.org/LazActiveX nachvollziehen. Hiebei bekomme ich bereits bei der Variablen Deklaration (Browser:TEvsWebBrowser;) diesen Fehler - Error: Identifier not found "TEvsWebBrowser". Wahrscheinlich ist es eine Kleinigkeit, aber ich habe jetzt einen ganzen Tag gesucht, bekomme aber nicht heraus, welches Package mir fehlt... kann mir jemand helfen? Ich habe auch in Google keine Lösung gefunden.
Vielen vielen Dank und Grüße
Hendrik
ich bin neu in der Community und auch in Lazarus. Ich habe sehr lange Delphi programmiert, bin aber nun "nur" noch Hobbyprogrammierer und von der aktuellen DELPHI-Preispolitik abgeschreckt worden.
Nun zu meiner Frage ich habe die Lazarus Actice X und die TLB vom IE eingebunden. Nun möchte ich den Beispielcode von der Seite http://wiki.freepascal.org/LazActiveX nachvollziehen. Hiebei bekomme ich bereits bei der Variablen Deklaration (Browser:TEvsWebBrowser;) diesen Fehler - Error: Identifier not found "TEvsWebBrowser". Wahrscheinlich ist es eine Kleinigkeit, aber ich habe jetzt einen ganzen Tag gesucht, bekomme aber nicht heraus, welches Package mir fehlt... kann mir jemand helfen? Ich habe auch in Google keine Lösung gefunden.
Vielen vielen Dank und Grüße
Hendrik
Re: Problem TEvsWebBrowser
Erstmal ein fröhliches Willkommen im Forum!
Hast du
Bitte beachten, es wird FPC>2.6.1 und eine Lazarus-Trunc-Version benötigt! Evtl. einen Snapshot von hier runterladen!
[Edit] habe eben das Bsp mal getestet, funktioniert auch
:
Hast du
wenn ja, dann sollte auch "TEvsWebBrowser" gefunden werden (wird in SHDocVw_1_1_TLB erstellt).- Open 'Import Type Library' from the tools menu and select 'C:\WINDOWS\system32\ieframe.dll'. Click OK. The SHDocVw_1_1_TLB unit is created.
- Add SHDocVw_1_1_TLB to the uses clause.
Bitte beachten, es wird FPC>2.6.1 und eine Lazarus-Trunc-Version benötigt! Evtl. einen Snapshot von hier runterladen!
[Edit] habe eben das Bsp mal getestet, funktioniert auch

Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Problem TEvsWebBrowser
Danke für die schnelle Hilfe! Die TLB habe ich importiert.
Vielleicht habe ich die falsche Version oder es ist sonst etwas schief gelaufen. Ich werde es nachher testen!
Vielen Dank!
Vielleicht habe ich die falsche Version oder es ist sonst etwas schief gelaufen. Ich werde es nachher testen!
Vielen Dank!
Re: Problem TEvsWebBrowser
Guten Abend,
ich habe 2.7.1 deinstalliert und noch einmal 2.6.1 heruntergeladen und installiert. Dann die Lazarus Active X Komponente installiert und dann die ieframe.dll eingelesen und die TLB in die uses eingebunden, aber ich bekomme es nicht ans laufen... Immer noch unverändert...
Bin für jeden Tip dankbar.
Danke!
ich habe 2.7.1 deinstalliert und noch einmal 2.6.1 heruntergeladen und installiert. Dann die Lazarus Active X Komponente installiert und dann die ieframe.dll eingelesen und die TLB in die uses eingebunden, aber ich bekomme es nicht ans laufen... Immer noch unverändert...
Bin für jeden Tip dankbar.
Danke!
Re: Problem TEvsWebBrowser
Hast du wirklich alle Schritte entsprechend der Seite gemacht (bei mir liefs auf Anhieb)?!:
Habe mal mein Test-Projekt angehangen läuft das?!- Drop a TActiveXContainer, a TButton, TLabel and a TEdit on a form. Resize and position TActiveXContainer to your liking
- Open 'Import Type Library' from the tools menu and select 'C:\WINDOWS\system32\ieframe.dll'. Click OK. The SHDocVw_1_1_TLB unit is created.
- Add SHDocVw_1_1_TLB to the uses clause.
- Create an OnClick event for the button and an OnCreate event for the form.
- Create in class TForm1 the private procedure OnStatusTextChange(Sender: TObject;Text_:WideString);
- Dateianhänge
-
IE Inside.zip
- (145.04 KiB) 97-mal heruntergeladen
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: Problem TEvsWebBrowser
Ich habe es ähnlich im Einsatz Michl, jedoch fehlt in Deinem Zip-Archiv eine Datei.
Auszug Uses aus project1.lpr:
Einfach mit in den Projekt-Ordner legen!
Auszug Uses aus project1.lpr:
Code: Alles auswählen
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Unit1, SHDocVw_1_1_TLB,
MSHTML_4_0_TLB // <-- Damit es funktioniert fehlt noch diese Datei MSHTML_4_0_TLB.pas
{ you can add units after this };
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
Re: Problem TEvsWebBrowser
Das war der Hinweisgocher hat geschrieben: Einfach mit in den Projekt-Ordner legen!

Merci!
Hendrik
Re: Problem TEvsWebBrowser
Danke, für den Hinweis. Ich hatte noch ein bischen damit gespielt. Zum posten des Projekts, hatte ich wieder alles entfernt (bis auf diese Unit ... irgendwie übersehen). Zum Starten, des Minimalbsp. brauchts die nicht, zum Zugriff auf das Document-Objekt schon.gocher hat geschrieben:Ich habe es ähnlich im Einsatz Michl, jedoch fehlt in Deinem Zip-Archiv eine Datei.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Problem TEvsWebBrowser
Hallo Zusammen,
ich komme mir irgendwie vor wie ein blutiger Anfänger
Jetzt erhalte ich von dem Webbrowser nach dem Navigate2 eine Fehlermeldung >>Run Error 217<< und danach EControlC "Control-C Hit".
Ich brauche nicht zusagen, dass ich nicht auf Ctrl+C gedrückt habe
Kann mir hier noch jemand helfen??? Danke!!
Hendrik
ich komme mir irgendwie vor wie ein blutiger Anfänger

Jetzt erhalte ich von dem Webbrowser nach dem Navigate2 eine Fehlermeldung >>Run Error 217<< und danach EControlC "Control-C Hit".
Ich brauche nicht zusagen, dass ich nicht auf Ctrl+C gedrückt habe

Kann mir hier noch jemand helfen??? Danke!!
Hendrik
Re: Problem TEvsWebBrowser
Meinst du z.B. bei dem Buttonclick?:
oder rufts du Navigate2 irgendwie anders auf?!
Welches Betriebssystem, welche Lazarus-Version nutzt du?!
Bei mir unter Win7 64bit, Lazarus 1.3 32bit, FPC 2.7.1 läufts eigentlich stabil (bis auf dass nach Beendigung des Programms der Debugger abschmiert). Achja, Heaptrc darfst du nicht verwenden, da gibts auch bei mir Probleme!
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
url,onull:Olevariant;
begin
url:=Utf8decode(Edit1.Text);
onull:=NULL;
Browser.ComServer.Navigate2(url,onull,onull,onull,onull);
end;
Welches Betriebssystem, welche Lazarus-Version nutzt du?!
Bei mir unter Win7 64bit, Lazarus 1.3 32bit, FPC 2.7.1 läufts eigentlich stabil (bis auf dass nach Beendigung des Programms der Debugger abschmiert). Achja, Heaptrc darfst du nicht verwenden, da gibts auch bei mir Probleme!
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Problem TEvsWebBrowser
Hallo,
ich nutze noch die Version 2.6.1 wie oben gewünscht
)
Ich rufe den Browser Navigate per Timer auf
HTMLTEXT.SavetoFile(PFAD +'\TEMPindex.html');
url:=Utf8decode(PFAD +'\TEMPindex.html');
onull:=NULL;
Browser.ComServer.Navigate2(url,onull,onull,onull,onull);
Der Fehler kommt mit einem gewissen Zeitverzug. Kommentiere ich den Navigate aus, kommt der Fehler aber nicht mehr....
Gruß
Hendrik
ich nutze noch die Version 2.6.1 wie oben gewünscht

Ich rufe den Browser Navigate per Timer auf
HTMLTEXT.SavetoFile(PFAD +'\TEMPindex.html');
url:=Utf8decode(PFAD +'\TEMPindex.html');
onull:=NULL;
Browser.ComServer.Navigate2(url,onull,onull,onull,onull);
Der Fehler kommt mit einem gewissen Zeitverzug. Kommentiere ich den Navigate aus, kommt der Fehler aber nicht mehr....
Gruß
Hendrik
Re: Problem TEvsWebBrowser
Ich glaub, da hast du was missverstanden. 2.6.1 ist eine Entwicklerversion und auf jeden Fall nicht up to date! Aktuelle Trunc-Versionen von FPC sind 2.6.3 und 2.7.1. Oben stand > 2.6.1., so wie auf der Wiki-Seite geschrieben.hahe hat geschrieben:ich nutze noch die Version 2.6.1 wie oben gewünscht)
Ich würde dir dringend empfehlen, wenigstens die aktuelle stabile Lazarus-Version 1.0.12 (mit FPC 2.6.2) zu installieren (unter Windows nutze ich derzeit 32bit-Versionen und bin damit sehr zufrieden)!
Wenn es dir nur um den Quelltext der HTML-Seiten geht und nicht um deren Ansicht, würde ich dir Synapse empfehlen, läuft auf jeden Fall sehr stabil!hahe hat geschrieben:HTMLTEXT.SavetoFile(PFAD +'\TEMPindex.html');
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: Problem TEvsWebBrowser
Ich glaube da hast Du etwas falsch verstanden Michl, ich glaube wenn ich in meine Zauberkugel schaue HTMLTEXT ist vom Typ TStringlist oder TStream, in der Hendrik seinen HTML-Code zusammen baut um ihn dann im Browser anzuzeigen!
Hendrik, zu Deinem Problem, Du schreibst Deinen HTML-Code in eine Datei und übergibst sie an die Methode Navigate2, was passiert wenn Du den kompletten Pfad, also den aus Utf8decode(PFAD +'\TEMPindex.html') generierten, direkt in den Internet Explorer eingibst?
Wenn das funktioniert würde ich im zweiten Schritt, den Pfad in dem Beispiel erst einmal ins Edit1 eintragen.
Wenn auch das Funktioniert nützt uns der Code-Auszug den Du uns hier zur Verfügung stellt nichts, dann liegt der Fehler an anderer Stelle!
Schöner wäre es außerdem wenn Du mit
den Browser initialisiert und dann mit
das Dokument ausgibst!
Hendrik, zu Deinem Problem, Du schreibst Deinen HTML-Code in eine Datei und übergibst sie an die Methode Navigate2, was passiert wenn Du den kompletten Pfad, also den aus Utf8decode(PFAD +'\TEMPindex.html') generierten, direkt in den Internet Explorer eingibst?
Wenn das funktioniert würde ich im zweiten Schritt, den Pfad in dem Beispiel erst einmal ins Edit1 eintragen.
Wenn auch das Funktioniert nützt uns der Code-Auszug den Du uns hier zur Verfügung stellt nichts, dann liegt der Fehler an anderer Stelle!
Schöner wäre es außerdem wenn Du mit
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
var ovUrl, ovNull:Olevariant;
begin
Browser:=TEvsWebBrowser.Create(Self);
ActiveXContainer1.ComServer:=Browser.ComServer;
ActiveXContainer1.Active:=true;
Browser.OnStatusTextChange:=@OnStatusTextChange;
ovUrl := Utf8decode('about:blank'); // eigentlich sollte hier an Stelle des : ein Doppelpunkt stehen, Fehler kommt durch Syntax Highlighting
ovNull := NULL;
Browser.ComServer.Navigate2(ovUrl, ovNull,ovNull,ovNull,ovNull);
end;
Code: Alles auswählen
var
ovDocument:Olevariant;
begin
ovDocument := Browser.ComServer.Document;
ovDocument.Write('<html><body><p>Hello World!</p></body></html>'); // oder Dein HTMLTEXT.Text
ovDocument.Close();
end;
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
Re: Problem TEvsWebBrowser
Hallo Zusammen!
Vielen Dank erst einmal für die wirklich super Hilfe hier! Toll ein so aktives Forum zu finden!
Gocher hat den Nagel auf den Kopf getroffen
Ich bastel mir ein verhältnismäßig komplexes HTML mit CSS und JS Script Units über Metronic zusammen, fülle Variablen mit Datenbank Inhalt und gebe es dann im Browser aus.
Die Fehlermeldungen scheinen an "Problemen" in den JS Modulen zu hängen. Ich konnte diese mittlerweile lokalisieren, aber ich bekomme die nicht raus, da ich auch externe Libraries einbinde, auf die ich keinen Einfluss habe.
Wie kann es sein, dass eine JS Datei, die im nativen IE problemlos abläuft in dem ActiveX eingebundenen IE zum Absturz führt? Gibt es eine Fehlerbehandlungsroutine in der Komponente die ich verwenden kann? Aktuell quält mich ein SIGFPE Fehler in einer der JS Dateien.
Danke für jede Hilfe!
Gruß
Hendrik
Vielen Dank erst einmal für die wirklich super Hilfe hier! Toll ein so aktives Forum zu finden!
Gocher hat den Nagel auf den Kopf getroffen

Die Fehlermeldungen scheinen an "Problemen" in den JS Modulen zu hängen. Ich konnte diese mittlerweile lokalisieren, aber ich bekomme die nicht raus, da ich auch externe Libraries einbinde, auf die ich keinen Einfluss habe.
Wie kann es sein, dass eine JS Datei, die im nativen IE problemlos abläuft in dem ActiveX eingebundenen IE zum Absturz führt? Gibt es eine Fehlerbehandlungsroutine in der Komponente die ich verwenden kann? Aktuell quält mich ein SIGFPE Fehler in einer der JS Dateien.
Danke für jede Hilfe!
Gruß
Hendrik
Re: Problem TEvsWebBrowser
Ich arbeite mit Webkit und dort bekommt man sehr schnell einen Ausnahmefehler (gerne SIGFPE), wenn man nicht
SetExceptionMask([exInvalidOp,exDenormalized,exZeroDivide,exOverflow,exUnderflow,exPrecision]);
der Einheit Math am Start ausführt. Webkit hat wohl intern ein paar Unstimmigkeiten. Mit dieser Zeile läuft aber alles einwandfrei.
Vielleicht hilf das ja auch bei Deinem Problem.
SetExceptionMask([exInvalidOp,exDenormalized,exZeroDivide,exOverflow,exUnderflow,exPrecision]);
der Einheit Math am Start ausführt. Webkit hat wohl intern ein paar Unstimmigkeiten. Mit dieser Zeile läuft aber alles einwandfrei.
Vielleicht hilf das ja auch bei Deinem Problem.