Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Initialisierung und starten von CEF4 (https://www.delphipraxis.net/206106-initialisierung-und-starten-von-cef4.html)

DXler 19. Nov 2020 13:30

Initialisierung und starten von CEF4
 
Es geht um die Delphi-Version des "Chromium-Embedded-Framework"(CEF4).

Nachdem ich die Komponenten problemlos installiert hatte, wollte ich die Demos in der IDE (Delphi 10.1 Berlin) ausprobieren und musste feststellen, das gar nichts ging. Egal welche Demo ich ausprobiert hatte: es kamen nur Fehler!

Also hatte ich mir die Initialisierung und den Start der Chromium Engine angesehen und einen eigenen Weg gefunden diese erfolgreich umzusetzen.

Bis ich soweit war hatte ich viele Quelltextzeilen zum analysieren vor mir und stellte dabei fest, das die Einbindung und die Nutzung der Komponenten (für meine Begriffe) sehr "umständlich" umgesetzt worden ist.

Und nun zum eigentlichen Punkt: der Autor Salvador Díaz Fau hat in seinen Demos die Initialisierung und den Start in die Objekt Pascal-Projektdatei (DPR) gelegt und in der Delphi Projekt-Datei (dproj) hat er dann die nicht-visuellen Komponenten erstellt und initialisiert.

Soweit so gut, aber er muss in der Delphi Projekt-Datei die Timer-Komponente nutzen, um festzustellen, ob die Chromium Engine gestartet ist.

Ich habe die Initialisierung und den Start in die "FromCreate"-Ereignisroutine gelegt und dort dann die Komponenten, die ich per IDE der Form hinzugefügt habe, entsprechend zugewiesen bzw. initialisiert.


Welche Einbindung ist jetzt die bessere Wahl und ist konformer bezüglich IDE?

Bernhard Geyer 19. Nov 2020 13:39

AW: Initialisierung und starten von CEF4
 
Ende 2020 würde ich mir überlegen nicht gleich auf D10.4 zu gehen und auf Edge Chromium zu setzen.
Nachteil: Wird nicht überall schon gehen
Vorteil: Kein 100 MB Dateien mit zu verteilen, Keine Umständliche Initialisierung

DXler 19. Nov 2020 14:21

AW: Initialisierung und starten von CEF4
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1477544)
Ende 2020 würde ich mir überlegen nicht gleich auf D10.4 zu gehen und auf Edge Chromium zu setzen.

Ist im ersten Moment eine wirklich gute Idee.

Jetzt kommt das "aber": der Umstieg auf Delphi 10.4 ist für mich finanziell nicht unproblematisch, da ich nicht jedes Jahr die neue Version kaufe und somit auch nicht den günstigeren Upgrade-Preis nutzen kann, sondern ich muß warten, bis ich ein Angebot finde bei dem ich entsprechend sparen kann.

Im Moment gibt es zwar Delphi 10.4 für 900 Euro zuzgl. MwSt. aber das sind immernoch über 1000 Euro und somit für mich (momentan) nicht machbar (private Gründe).


Zitat:

Zitat von Bernhard Geyer (Beitrag 1477544)
Nachteil: Wird nicht überall schon gehen
Vorteil: Kein 100 MB Dateien mit zu verteilen, Keine Umständliche Initialisierung

Die notwendigen CEF-Binaries muss sich der Anwender selbst herunterladen, da ich immer dafür bin, das dieser auch was "nützliches" machen soll. :)

Spass beiseite: ich habe keine Lust mir Ärger einzuhandeln, wenn ich Binaries mitliefere die eigentlich nicht mitgeliefert werden dürfen (Lizenzbestimmung).


Welche "umständliche Initialisierung"?


Die Initialisierung die ich nutze ist ganz einfach und "im Handumdrehen" erledigt:

1) benötigte Units einbinden,

2) in die Ereignisroutine "FormCreate" kommen die folgenden Zeilen rein:

GlobalCEFApp := TCefApplication.Create;

GlobalCEFApp.FrameworkDirPath := <Pfad zu den Chromium-Binaries>;
GlobalCEFApp.ResourcesDirPath := <Pfad zu den Resources>;
GlobalCEFApp.LocalesDirPath := <Pfad zum "locales"-Verzeichnis;
GlobalCEFApp.EnableGPU := True; // Enable hardware acceleration
GlobalCEFApp.cache := <Pfad zum "cache"-Verzeichnis>;
GlobalCEFApp.UserDataPath := <Pfad zum "data"-Verzeichnis>;


dann wird geprüft, ob die Funktion "StartMainProcess" den Wert "True" zurück liefert.

Trifft dies zu, wird z. B. der "Browser" für die Komponente "ChromiumWindow" mit

ChromiumWindow1.CreateBrowser;
ChromiumWindow1.Initialized;

erstellt und initialisiert und zum Schluss werden (falls notwendig) noch ein paar Ereignisrouten von der Chromium-Komponente zugewiesen:

z. B.:

ChromiumWindow1.ChromiumBrowser.OnBeforeDownload := BeforeDownload;
ChromiumWindow1.ChromiumBrowser.OnDownloadUpdated := DownloadUpdated;


Mehr brauche ich nicht.


Hinzu kommt noch: wenn ich das Chromium-Embedded-Framework nutze habe ich die Sicherheit das dies auch langfristig aktuell gehalten wird.

Bei Micro$oft ist es so, das man nie weiß, wie aktuell das CEF für Edge gehalten wird... Bestes Beispeil: IE 11. Wurde jahrelang vernachlässigt bis er durch den aktuellen Edge "ergänzt" wurde (denn der IE 11 ist immernoch da!).

mytbo 19. Nov 2020 14:53

AW: Initialisierung und starten von CEF4
 
Zitat:

Zitat von DXler (Beitrag 1477547)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1477544)
Ende 2020 würde ich mir überlegen nicht gleich auf D10.4 zu gehen und auf Edge Chromium zu setzen.

Ist im ersten Moment eine wirklich gute Idee.

Wenn du nicht in Delphi 10.4 investieren kannst, dann vielleicht als Komponente von TMS. Hier ein Blog Artikel dazu.

Bis bald...
Thomas

himitsu 19. Nov 2020 15:38

AW: Initialisierung und starten von CEF4
 
Zitat:

und auf Edge Chromium zu setzen.
Edge sollte inzwischen auf allen Benutzer-Windows10-Installationen vorhanden sein (wurde mitte des Jahres überall per Update ausgerollt) und beim Rest kann der Admin das in der Firma einspielen, wenn's noch fehlt.

* Windows 10 ist inzwischen Standard und sonst gibt es nichts mehr.
* Windows XP und 7 sind offiziell praktisch tot (als Entwickler darf man sie ignorieren, so lange es keine expliziten Anforderungen gibt)
* Und gewisse andere Windows-Editionen will niemand freiwillig benutzen.

Bernhard Geyer 19. Nov 2020 16:38

AW: Initialisierung und starten von CEF4
 
Zitat:

Zitat von DXler (Beitrag 1477547)
Im Moment gibt es zwar Delphi 10.4 für 900 Euro zuzgl. MwSt. aber das sind immernoch über 1000 Euro und somit für mich (momentan) nicht machbar (private Gründe).

Wenn du Delphi privat (oder nur wenige Einnahmen hast) kostet dich das 0 € -> Community-Edition

Zitat:

Zitat von Bernhard Geyer (Beitrag 1477544)
Die notwendigen CEF-Binaries muss sich der Anwender selbst herunterladen, da ich immer dafür bin, das dieser auch was "nützliches" machen soll. :)

Ganz schlechte Idee. Die Binaries müssen zu deinen Delphi-Units passen.
Jedenfalls meckert er wenn Binaries älter als die Delphi-Units sind. Umgekehrt hatte ich das noch nicht geprüft.


Spass beiseite: ich habe keine Lust mir Ärger einzuhandeln, wenn ich Binaries mitliefere die eigentlich nicht mitgeliefert werden dürfen (Lizenzbestimmung).

CEF ist BSD. Welche Probleme hast du damit?

Zitat:

Zitat von DXler (Beitrag 1477547)
Welche "umständliche Initialisierung"?

Kenn ich. Ist halt mehr als ein Einzeiler

Zitat:

Zitat von DXler (Beitrag 1477547)
Hinzu kommt noch: wenn ich das Chromium-Embedded-Framework nutze habe ich die Sicherheit das dies auch langfristig aktuell gehalten wird.

Auch die Version beim Kunden? Hast du einen Autoupdater gebaut=

Zitat:

Zitat von DXler (Beitrag 1477547)
Bei Micro$oft ist es so, das man nie weiß, wie aktuell das CEF für Edge gehalten wird...

Das für MS Edge ihr supporteter Browser ist, ist er sicherlich aktuell

Zitat:

Zitat von DXler (Beitrag 1477547)
Bestes Beispeil: IE 11. Wurde jahrelang vernachlässigt bis er durch den aktuellen Edge "ergänzt" wurde (denn der IE 11 ist immernoch da!).

Schlechtes Beispiel. Der IE wurde (was HTML5 betrifft) vernachlässigt weil er der Platzhirsch war.
erst mit FF und Chrome und dem versenken in der bedeutungslosigkeit ist er aktualisiert und durch Edge Gen1 ersetzt worden.
Und das er auch noch Jahrelang da sein wird ist klar. Vieles in Windows setzt ihn Vorraus.

DXler 19. Nov 2020 16:50

AW: Initialisierung und starten von CEF4
 
Zitat:

Zitat von mytbo (Beitrag 1477551)
Wenn du nicht in Delphi 10.4 investieren kannst, dann vielleicht als Komponente von TMS. Hier ein Blog Artikel dazu.

Also: zuerst einmal finde ich es toll, das versucht wird mir zu helfen. Dafür schon mal ein großes "Danke schön"!

Zu dem "TAdvWebBrowser": ich habe ihn nach einigem suchen gefunden und das "Problem" dabei ist: er ist Bestandteil vom "TMS VCL UI Pack" und ist nicht als einzelne Komponente erhältlich. Es wäre finanziell zwar so gerade noch ok wenn ich mir das "TMS VCL UI Pack" kaufen würde (beide Augen und alle "Hühneraugen" müssten dann allerdings zugedrückt sein :lol: ).

Aber: dann habe ich Komponenten dabei die ich, zum einen, nie brauchen werde und zum anderen habe ich andere mit ähnlichem Funktionsumfang bereits als OpenSource installiert und deshalb wären dann, auf den tatsächlichen Nutzen umgerechnet, 295,00 Euro für eine Komponente die ich dann auch wirklich benutzen würde, einfach zu teuer.

Hinzu kommt noch: ich brauche doch gar keine andere Browser-Komponente und das habe ich auch nirgendwo geschrieben (s. ursprünglichen Beitrag von mir).

Ich benutze doch die CEF4-Komponenten und bin auch mehr als zufrieden damit, weil sie mir Möglichkeiten bietet die ich bis jetzt bei keiner anderen, mir bekannten, OpenSource-Komponente gefunden habe.

Der ursprüngliche Beitrag von mir war lediglich die Frage, ob die Einbindung vom CEF4Delphi-Autor (DPR-Modifikation und dproj) oder meine (rein über "FormCreate") die korrekte ist. Es ging nie darum, ob ich eine andere Browser-Komponente benötige oder auf das aktuelle Delphi upgraden sollte.


Nur so als "Randnotiz": ich habe auch noch ein "neues, noch nie installiertes Delphi 10.2" rumliegen... :-D

DXler 19. Nov 2020 17:20

AW: Initialisierung und starten von CEF4
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1477559)
Zitat:

Zitat von DXler (Beitrag 1477547)
Im Moment gibt es zwar Delphi 10.4 für 900 Euro zuzgl. MwSt. aber das sind immernoch über 1000 Euro und somit für mich (momentan) nicht machbar (private Gründe).

Wenn du Delphi privat (oder nur wenige Einnahmen hast) kostet dich das 0 € -> Community-Edition

Ich weiß! Allerdings gibt es, soweit ich weiß, von Delphi 10.4 noch keine Community-Edition. Somit ist die Delphi 10.3 die aktuelle und die habe ich auch installiert, aber noch nicht in Benutzung.



Zitat:

Zitat von Bernhard Geyer (Beitrag 1477544)
Zitat:

Zitat von DXler (Beitrag 1477547)
Die notwendigen CEF-Binaries muss sich der Anwender selbst herunterladen, da ich immer dafür bin, das dieser auch was "nützliches" machen soll. :)

Ganz schlechte Idee. Die Binaries müssen zu deinen Delphi-Units passen.
Jedenfalls meckert er wenn Binaries älter als die Delphi-Units sind. Umgekehrt hatte ich das noch nicht geprüft.


Zitat:

Zitat von DXler (Beitrag 1477547)
Spass beiseite: ich habe keine Lust mir Ärger einzuhandeln, wenn ich Binaries mitliefere die eigentlich nicht mitgeliefert werden dürfen (Lizenzbestimmung).

CEF ist BSD. Welche Probleme hast du damit?


Ich habe mich bis jetzt lediglich damit beschäftigt die CEF4Delphi-Komponenten kennen zu lernen, da die mitgelieferten Demos (zumindest bei mir) nicht funktionieren.

Wenn ich soweit bin, das ich für mich selbst entscheide, das ich das Projekt weiterführe und dann auch veröffentlichen werde, kümmere ich mich um die Lizenz.

Für mich persönlich macht es keinen Sinn wenn ich mich um die Lizenzbestimmungen im Voraus kümmere und dann brauche ich die ganzen Lizenzbestimmungen im Nachhinein überhaupt nicht, weil z. B. die Komponenten gar nicht im Projekt benutzt werden.



Zitat:

Zitat von Bernhard Geyer (Beitrag 1477544)
Zitat:

Zitat von DXler (Beitrag 1477547)
Hinzu kommt noch: wenn ich das Chromium-Embedded-Framework nutze habe ich die Sicherheit das dies auch langfristig aktuell gehalten wird.

Auch die Version beim Kunden? Hast du einen Autoupdater gebaut=

Bis jetzt gibt es bei Kunden noch keine Programme um die ich mich kümmern müsste. Ich werde, wenn alles so klappt wie ich mir das denke, auch keine (direkten) Kunden haben (das "warum" und "wieso" möchte ich nicht erklären => bitte nicht danach fragen! Danke! :) )

Für das "Autoupdate" habe ich schon eine Idee, aber auch hier gilt: bitte nicht nachfragen. Ich erkläre hier nichts (meine ich nicht böse, sondern ich möchte einfach nicht darüber sprechen, weil es sonst möglicherweise in endlose Diskussionen "ausufert", warum ich das so oder jenes so mache).


Wenn wirklich Binaries mitgeliefert werden müssen, dann kann man doch einfach das Installationsprogramm der Anwendung so konfigurieren, das diese automatisch während der Installation heruntergeladen und "installiert" werden und somit "erledigt" sich das quasi von selbst.

Rollo62 20. Nov 2020 06:50

AW: Initialisierung und starten von CEF4
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1477544)
Ende 2020 würde ich mir überlegen nicht gleich auf D10.4 zu gehen und auf Edge Chromium zu setzen.

Das stimmt.
Es könnte aber sein das bestimmte Funktionen verwendet werden müssen, die Edge nicht ohne Weiteres freigeschaltet hat.
Habe mit Edge noch nicht rumgespielt, aber kann der z.B. lokale Files öffnen ?

Mit Chomium geht definitiv (fast) Alles.

Bernhard Geyer 20. Nov 2020 07:03

AW: Initialisierung und starten von CEF4
 
Zitat:

Zitat von DXler (Beitrag 1477563)
Ich weiß! Allerdings gibt es, soweit ich weiß, von Delphi 10.4 noch keine Community-Edition. Somit ist die Delphi 10.3 die aktuelle und die habe ich auch installiert, aber noch nicht in Benutzung.

Das könnte natürlich sein. Aber sollte das nicht noch kommen?

Zitat:

Zitat von DXler (Beitrag 1477563)
Wenn ich soweit bin, das ich für mich selbst entscheide, das ich das Projekt weiterführe und dann auch veröffentlichen werde, kümmere ich mich um die Lizenz.

Ok, bei uns ist es umgekehrt. Bevor eine Komponente weiter untersucht wird, wird geprüft ob die Lizenz überhaupt kompatible mit unseren (Closed Source) ist.

Zitat:

Zitat von DXler (Beitrag 1477563)
Für das "Autoupdate" habe ich schon eine Idee, aber auch hier gilt: bitte nicht nachfragen. Ich erkläre hier nichts (meine ich nicht böse, sondern ich möchte einfach nicht darüber sprechen, weil es sonst möglicherweise in endlose Diskussionen "ausufert", warum ich das so oder jenes so mache).

Wir haben auch einen Updater. Die komplexität sollte man nicht unterschätzen. Es ist mehr als nur "ein paar Dateien austauschen".

Zitat:

Zitat von DXler (Beitrag 1477563)
Wenn wirklich Binaries mitgeliefert werden müssen, dann kann man doch einfach das Installationsprogramm der Anwendung so konfigurieren, das diese automatisch während der Installation heruntergeladen und "installiert" werden und somit "erledigt" sich das quasi von selbst.

Nicht unbedingt. Das muss auch so erlaubt sein und eine Beschränkung von Lizenzen (z.B. die GPL-Falle bei MySQL) umgeht man damit nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 Uhr.
Seite 1 von 2  1 2      

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