Sign in Join
Wiki copytemporary

fpCEF3/de: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-**Deutsch (de)** | [[fpCEF3|**English (en)**]]
2-****
3-
4-## Contents
5-
6- * 1 Beschreibung
7- * 2 Installation
8- * 2.1 Download Package
9- * 2.2 Installation des Packages
10- * 2.3 Download Framework CEF3
11- * 3 Verwendung
12- * 3.1 Minimalbeispiel
13- * 3.1.1 Windows
14- * 3.2 Zeige URL der geladenen Seite
15- * 3.3 Download von Dateien ermöglichen
16- * 3.4 Drucken per Code
17- * 3.5 Erstellen eines PDFs
18- * 4 Bekannte Probleme
19- * 5 Weitere Informationen
20-
211## Beschreibung
222
23-[![SimpleChromium.png](/wiki-images/b/b4/SimpleChromium.png)](</File:SimpleChromium.png>)
3+<img src="SimpleChromium.png" title="SimpleChromium.png" width="320" />
244
25-Chromium ist ein Open-Source-Projekt (von Google), welches einen eigenen Browser für unterschiedliche Plattformen zu entwickeln als Ziel hat. Unter anderem basiert der Browser Chrome auf diesen Quelldaten.
5+Chromium ist ein Open-Source-Projekt (von Google), welches einen eigenen Browser für unterschiedliche Plattformen zu entwickeln als Ziel hat. Unter anderem basiert der Browser Chrome auf diesen Quelldaten.
266
27-Das Chromium Embedded Framework (CEF) ist ein Open-Source-Framework zum Einbetten eines Browser- Controls basierend auf Chromium. Es kann auf Linux, Mac OS X und Windows in 32 und 64 Bit-Versionen genutzt werden. CEF gibt es in den Versionen CEF1 und CEF3 wobei CEF1 nicht mehr weiterentwickelt wird.
7+Das Chromium Embedded Framework (CEF) ist ein Open-Source-Framework zum Einbetten eines Browser- Controls basierend auf Chromium. Es kann auf Linux, Mac OS X und Windows in 32 und 64 Bit-Versionen genutzt werden. CEF gibt es in den Versionen CEF1 und CEF3 wobei CEF1 nicht mehr weiterentwickelt wird.
288
29-Es gibt für Delphi ein Framework (Delphi Chromium Embedded Framework - DCEF3) und zwei Ableger, die auch für Lazarus/FreePascal genutzt werden können ([fpCEF3](<https://github.com/dliw/fpCEF3>) und [WACEF](</index.php?title=WACEF/de&action=edit&redlink=1> "WACEF/de \(page does not exist\)")).
9+Es gibt für Delphi ein Framework (Delphi Chromium Embedded Framework - DCEF3) und zwei Ableger, die auch für Lazarus/FreePascal genutzt werden können ([fpCEF3](https://github.com/dliw/fpCEF3) und [[WACEF/de|WACEF]]).
3010
3111## Installation
3212
33-Neben dem Lazarus Package muss auch das Framework selbst heruntergeladen und dem eigenen Projekt zur Verfügung gestellt werden. Wichtig dabei ist, dass das Framework zu dem Package passt. Welches das ist und weitere hilfreiche Installationshinweise sind auf Github zu finden: <https://github.com/dliw/fpCEF3>
13+Neben dem Lazarus Package muss auch das Framework selbst heruntergeladen und dem eigenen Projekt zur Verfügung gestellt werden. Wichtig dabei ist, dass das Framework zu dem Package passt. Welches das ist und weitere hilfreiche Installationshinweise sind auf Github zu finden: [<https://github.com/dliw/fpCEF3>](https://github.com/dliw/fpCEF3)
3414
35-Zum Zeitpunkt der Überarbeitung dieser Beschreibung (Mai 2016), ist CEF 3.2526.1373 das benötigte Framework.
15+Zum Zeitpunkt der Überarbeitung dieser Beschreibung (Mai 2016), ist CEF 3.2526.1373 das benötigte Framework.
3616
3717### Download Package
3818
39-fpCEF3 kann per [Git](<http://git-scm.com/>)
40-```
41-<git://github.com/dliw/fpCEF3.git>
42-```
19+fpCEF3 kann per [Git](http://git-scm.com/)
4320
44-oder auch gezippt heruntergeladen (und in ein separates Verzeichnis entpackt) werden:
45-```
46-[master.zip](<https://github.com/dliw/fpCEF3/archive/master.zip>)
47-```
21+[`git://github.com/dliw/fpCEF3.git`](git://github.com/dliw/fpCEF3.git)
4822
23+oder auch gezippt heruntergeladen (und in ein separates Verzeichnis entpackt) werden:
24+
25+[`master.zip`](https://github.com/dliw/fpCEF3/archive/master.zip)
26+
4927### Installation des Packages
5028
51-[![Chromium.png](/wiki-images/3/33/Chromium.png)](</File:Chromium.png>)
29+![](/wiki-images/3/33/Chromium.png)
5230
53-Nach dem Herunterladen des Packages fpCEF3, kann dieses in Lazarus installiert werden:
31+Nach dem Herunterladen des Packages fpCEF3, kann dieses in Lazarus installiert werden:
5432
55- * Starten Sie Lazarus und öffnen Sie im Hauptmenu _Package_ -> _Package-Datei (.lpk) öffnen ..._
56- * Wählen Sie fpCEF3-Verzeichnis das Unterverzeichnis _Component_ und öffnen Sie die Datei _cef3.lpk_
57- * Das Packagebearbeitungsfenster wird geöffnet
58- * Klicken Sie auf _Kompilieren_. Das Package wird nun kompiliert
59- * Klicken Sie nun auf _Nutzung ..._ -> _Installieren_ und bestätigen Sie das sich öffnende Fenster mit _Ja_
60- * Lazarus wird nun neu kompiliert und ein neuer Reiter _Chromium_ in der Komponentenpalette erstellt
33+- Starten Sie Lazarus und öffnen Sie im Hauptmenu *Package* -\> *Package-Datei (.lpk) öffnen ...*
34+- Wählen Sie fpCEF3-Verzeichnis das Unterverzeichnis *Component* und öffnen Sie die Datei *cef3.lpk*
35+- Das Packagebearbeitungsfenster wird geöffnet
36+- Klicken Sie auf *Kompilieren*. Das Package wird nun kompiliert
37+- Klicken Sie nun auf *Nutzung ...* -\> *Installieren* und bestätigen Sie das sich öffnende Fenster mit *Ja*
38+- Lazarus wird nun neu kompiliert und ein neuer Reiter *Chromium* in der Komponentenpalette erstellt
6139
6240### Download Framework CEF3
6341
64-Nun muss noch das Framework heruntergeladen und dessen Libraries für ein jeweiliges Projekt zur Verfügung gestellt werden. Dieses kann man von folgenden Seiten herunterladen:
65-<https://cefbuilds.com>
66-<http://www.magpcss.net/cef_downloads> (eine ältere Version von [hier](<http://www.magpcss.net/cef_downloads/index.php?query=label%3ADeprecated#list>))
42+Nun muss noch das Framework heruntergeladen und dessen Libraries für ein jeweiliges Projekt zur Verfügung gestellt werden. Dieses kann man von folgenden Seiten herunterladen:\
43+[<https://cefbuilds.com>](https://cefbuilds.com)\
44+[<http://www.magpcss.net/cef_downloads>](http://www.magpcss.net/cef_downloads) (eine ältere Version von [hier](http://www.magpcss.net/cef_downloads/index.php?query=label%3ADeprecated#list))
6745
68-![Light bulb](https://upload.wikimedia.org/wikipedia/commons/d/d8/Nuvola_apps_ktip.png) **Hinweis:** Unbedingt beachten, welche Frameworkversion mit dem aktuellen [fpCEF3](<https://github.com/dliw/fpCEF3>) genutzt werden kann! Siehe Installation
46+> **Note:** Unbedingt beachten, welche Frameworkversion mit dem aktuellen [fpCEF3](https://github.com/dliw/fpCEF3) genutzt werden kann! Siehe Installation
6947
7048## Verwendung
7149
7250### Minimalbeispiel
7351
74-Es wird ein Minimalbeispiel erstellt, dass die Verwendung als einfachen Browser zeigen soll.
52+Es wird ein Minimalbeispiel erstellt, dass die Verwendung als einfachen Browser zeigen soll.
7553
7654#### Windows
7755
78-Da für das Laden die CEF-Bibliotheken benötigt werden, ist es sinnvoll ein neuen Projektordner anzulegen, das Projekt und die Bibliotheken darin gemeinsam zu speichern.
56+Da für das Laden die CEF-Bibliotheken benötigt werden, ist es sinnvoll ein neuen Projektordner anzulegen, das Projekt und die Bibliotheken darin gemeinsam zu speichern.
7957
80- * Erstellen Sie mit dem Windows Explorer ein neues Verzeichnis für das Projekt an einen Ort Ihrer Wahl z.B. _C:\SimpleBrowser_
81- * Kopieren Sie das komplette CEF3-Verzeichnis _Resources_ nach _C:\SimpleBrowser_
82- * Kopieren Sie den Inhalt vom CEF3-Verzeichnis _Release_ in das Verzeichnis _C:\SimpleBrowser_
58+- Erstellen Sie mit dem Windows Explorer ein neues Verzeichnis für das Projekt an einen Ort Ihrer Wahl z.B. *C:\SimpleBrowser*
59+- Kopieren Sie das komplette CEF3-Verzeichnis *Resources* nach *C:\SimpleBrowser*
60+- Kopieren Sie den Inhalt vom CEF3-Verzeichnis *Release* in das Verzeichnis *C:\SimpleBrowser*
8361
84-Die Dateien, wie _libcef.dll_ , _natives_blob.bin_ , _icudtl.dat_ befinden sich somit im gleichen Verzeichnis, wie das Projekt, das Verzeichnis _locales_ unter _C:\SimpleBrowser\locales_.
85-Um Missverständnisse zu vermeiden ist hier nochmal die Dateistruktur für den Simplebrowser als Bild beigefügt:
86-
87-[![FilesForSimplebrowser.png](/wiki-images/a/aa/FilesForSimplebrowser.png)](</File:FilesForSimplebrowser.png>)
88-
62+Die Dateien, wie *libcef.dll*, *natives_blob.bin*, *icudtl.dat* befinden sich somit im gleichen Verzeichnis, wie das Projekt, das Verzeichnis *locales* unter *C:\SimpleBrowser\locales*.\
63+Um Missverständnisse zu vermeiden ist hier nochmal die Dateistruktur für den Simplebrowser als Bild beigefügt:\
8964
90-Erstellen Sie nun das Projekt mit Lazarus
65+![](/wiki-images/a/aa/FilesForSimplebrowser.png)\
9166
92- * Erstellen Sie eine neue leere [[Form Tutorial/de|GUI-Anwendung]]
93- * Speichern Sie das Projekt in das von Ihnen festgelegte Verzeichnis z.B. für Windows unter _C:\SimpleBrowser_
94- * Legen Sie ein `TEditButton` auf dem Formular ab und geben Sie ihm im Objektinspektor den Namen `edtURL` und richten ihn oben am Formular aus, indem Sie das `Align` auf `alTop` stellen
95- * Beschriften Sie die `ButtonCaption` mit `Go`
96- * Legen Sie nun noch ein `TChromium` auf dem Formular ab und geben diesen den Namen `Chromium` und stellen dessen `Align` auf `alClient`
97- * Erstellen Sie für den TEditButton `edtURL` den `OnButtonClick`-Eventhandler, in dem Sie im Objektinspektor Tab `Ereignisse` das Feld `OnButtonClick` wählen und auf den Button [...] klicken
98- * Schreiben Sie folgenden Code (Chromium soll bei jedem Klick die im Textfeld hinterlegte URL öffnen):
67+Erstellen Sie nun das Projekt mit Lazarus
9968
100-```
69+- Erstellen Sie eine neue leere [[Form Tutorial/de|GUI-Anwendung]]
70+- Speichern Sie das Projekt in das von Ihnen festgelegte Verzeichnis z.B. für Windows unter *C:\SimpleBrowser*
71+- Legen Sie ein `TEditButton` auf dem Formular ab und geben Sie ihm im Objektinspektor den Namen `edtURL` und richten ihn oben am Formular aus, indem Sie das `Align` auf `alTop` stellen
72+- Beschriften Sie die `ButtonCaption` mit `Go`
73+- Legen Sie nun noch ein `TChromium` auf dem Formular ab und geben diesen den Namen `Chromium` und stellen dessen `Align` auf `alClient`
74+- Erstellen Sie für den TEditButton `edtURL` den `OnButtonClick`-Eventhandler, in dem Sie im Objektinspektor Tab `Ereignisse` das Feld `OnButtonClick` wählen und auf den Button \[...\] klicken
75+- Schreiben Sie folgenden Code (Chromium soll bei jedem Klick die im Textfeld hinterlegte URL öffnen):
76+
77+``` pascal
10178procedure TForm1.edtURLClick(Sender: TObject);
102- begin
103- Chromium.Load(UTF8Decode(edtURL.Text));
104- end;
79+begin
80+ Chromium.Load(UTF8Decode(edtURL.Text));
81+end;
10582```
10683
107- * Beim Start des Programms muss `Chromium` initialisiert werden, dazu können Sie den `OnCreate`-Eventhandler des Formulars nutzen:
84+- Beim Start des Programms muss `Chromium` initialisiert werden, dazu können Sie den `OnCreate`-Eventhandler des Formulars nutzen:
10885
109-```
86+``` pascal
11087procedure TForm1.FormCreate(Sender: TObject);
111- var
112- PrjPath: ustring;
113- Lang, FallbackLang: string;
114- begin
115- PrjPath := UTF8Decode(GetCurrentDir + PathDelim);
116- CefLocalesDirPath := PrjPath + 'locales';
117- GetLanguageIDs(Lang, FallbackLang);
118- CefLocale := UTF8Decode(FallbackLang);
119- edtURL.Text:='http://www.lazarus-ide.org/';
120- end;
88+var
89+ PrjPath: ustring;
90+ Lang, FallbackLang: string;
91+begin
92+ PrjPath := UTF8Decode(GetCurrentDir + PathDelim);
93+ CefLocalesDirPath := PrjPath + 'locales';
94+ GetLanguageIDs(Lang, FallbackLang);
95+ CefLocale := UTF8Decode(FallbackLang);
96+ edtURL.Text:='http://www.lazarus-ide.org/';
97+end;
12198```
12299
123- * Sollte ein Bezeichner nicht gefunden werden, so muss möglicherweise noch eine Unit in die Uses-Clause aufgenommen werden z.B.:
100+- Sollte ein Bezeichner nicht gefunden werden, so muss möglicherweise noch eine Unit in die Uses-Clause aufgenommen werden z.B.:
124101
125-```
102+``` pascal
126103uses
127- sysutils, Forms, EditBtn, cef3lcl, cef3intf, cef3types, cef3lib, gettext;
104+ sysutils, Forms, EditBtn, cef3lcl, cef3intf, cef3types, cef3lib, gettext;
128105```
129106
130- * Starten Sie Ihr Programm, wenn alles gut läuft könnte es so aussehen:
107+- Starten Sie Ihr Programm, wenn alles gut läuft könnte es so aussehen:
131108
132-[![SimpleChromium.png](/wiki-images/b/b4/SimpleChromium.png)](</File:SimpleChromium.png>)
133-
109+![](/wiki-images/b/b4/SimpleChromium.png)\
134110
135111### Zeige URL der geladenen Seite
136112
137113Basierend auf dem Minimalbeispiel
138114
139- * Erstellen Sie für `Chromium` den `OnLoadEnd`-Eventhandler
140- * Schreiben Sie folgenden Code (URL soll nach jedem browsen aktualisiert werden):
115+- Erstellen Sie für `Chromium` den `OnLoadEnd`-Eventhandler
116+- Schreiben Sie folgenden Code (URL soll nach jedem browsen aktualisiert werden):
141117
142-```
118+``` pascal
143119procedure TForm1.ChromiumLoadEnd(Sender: TObject; const Browser: ICefBrowser;
144- const Frame: ICefFrame; httpStatusCode: Integer);
145- begin
146- edtURL.Text:=UTF8Encode(Browser.MainFrame.Url);
147- end;
120+ const Frame: ICefFrame; httpStatusCode: Integer);
121+begin
122+ edtURL.Text:=UTF8Encode(Browser.MainFrame.Url);
123+end;
148124```
149125
150126### Download von Dateien ermöglichen
151127
152- * Erstellen Sie für `Chromium` den `OnBeforeDownload`-Eventhandler und fügen Sie ein:
128+- Erstellen Sie für `Chromium` den `OnBeforeDownload`-Eventhandler und fügen Sie ein:
153129
154-```
130+``` pascal
155131procedure TForm1.ChromiumBeforeDownload(Sender: TObject;
156- const Browser: ICefBrowser; const downloadItem: ICefDownloadItem;
157- const suggestedName: ustring; const callback: ICefBeforeDownloadCallback);
158- begin
159- callback.Cont(suggestedName, True);
160- end;
132+ const Browser: ICefBrowser; const downloadItem: ICefDownloadItem;
133+ const suggestedName: ustring; const callback: ICefBeforeDownloadCallback);
134+begin
135+ callback.Cont(suggestedName, True);
136+end;
161137```
162138
163139### Drucken per Code
164140
165- * Fügen Sie ein `TButton` auf Ihr Formular ein und schreiben in dessen `OnClick` Ereignisbehandlungsroutine:
141+- Fügen Sie ein `TButton` auf Ihr Formular ein und schreiben in dessen `OnClick` Ereignisbehandlungsroutine:
166142
167-```
143+``` pascal
168144procedure TForm1.Button1Click(Sender: TObject);
169- begin
170- Chromium.Browser.Host.Print;
171- end;
145+begin
146+ Chromium.Browser.Host.Print;
147+end;
172148```
173149
174150### Erstellen eines PDFs
175151
176- * Fügen Sie ein `TSaveDialog` Ihrem Formular hinzu
177- * Fügen Sie ein `TButton` Ihrem Formular hinzu und schreiben in dessen `OnClick` Ereignisbehandlungsroutine:
152+- Fügen Sie ein `TSaveDialog` Ihrem Formular hinzu
153+- Fügen Sie ein `TButton` Ihrem Formular hinzu und schreiben in dessen `OnClick` Ereignisbehandlungsroutine:
178154
179-```
155+``` pascal
180156procedure TForm1.Button1Click(Sender: TObject);
181- var
182- CefPdfPrintSettings: TCefPdfPrintSettings;
183- EmptyCefStringUtf16: TCefStringUtf16;
184- begin
185- SaveDialog1.DefaultExt := 'pdf';
186- SaveDialog1.Filter := 'Portable Document Format (pdf)|*.pdf';
187- if SaveDialog1.Execute then
188- begin
189- FillByte(EmptyCefStringUtf16, SizeOf(EmptyCefStringUtf16), 0);
190-
191- CefPdfPrintSettings.backgrounds_enabled := 1;
192- CefPdfPrintSettings.header_footer_enabled := 0;
193- CefPdfPrintSettings.header_footer_title := EmptyCefStringUtf16;
194- CefPdfPrintSettings.header_footer_url := EmptyCefStringUtf16;
195- CefPdfPrintSettings.landscape := 0;
196- CefPdfPrintSettings.margin_bottom := 0;
197- CefPdfPrintSettings.margin_left := 0;
198- CefPdfPrintSettings.margin_right := 0;
199- CefPdfPrintSettings.margin_top := 0;
200- CefPdfPrintSettings.margin_type := PDF_PRINT_MARGIN_DEFAULT;
201- CefPdfPrintSettings.page_height := 0;
202- CefPdfPrintSettings.page_width := 0;
203- CefPdfPrintSettings.selection_only := 0;
204-
205- Chromium.Browser.Host.PrintToPdf(UTF8Decode(SaveDialog1.FileName), CefPdfPrintSettings, Nil);
206- end;
207- end;
157+var
158+ CefPdfPrintSettings: TCefPdfPrintSettings;
159+ EmptyCefStringUtf16: TCefStringUtf16;
160+begin
161+ SaveDialog1.DefaultExt := 'pdf';
162+ SaveDialog1.Filter := 'Portable Document Format (pdf)|*.pdf';
163+ if SaveDialog1.Execute then
164+ begin
165+ FillByte(EmptyCefStringUtf16, SizeOf(EmptyCefStringUtf16), 0);
166+
167+ CefPdfPrintSettings.backgrounds_enabled := 1;
168+ CefPdfPrintSettings.header_footer_enabled := 0;
169+ CefPdfPrintSettings.header_footer_title := EmptyCefStringUtf16;
170+ CefPdfPrintSettings.header_footer_url := EmptyCefStringUtf16;
171+ CefPdfPrintSettings.landscape := 0;
172+ CefPdfPrintSettings.margin_bottom := 0;
173+ CefPdfPrintSettings.margin_left := 0;
174+ CefPdfPrintSettings.margin_right := 0;
175+ CefPdfPrintSettings.margin_top := 0;
176+ CefPdfPrintSettings.margin_type := PDF_PRINT_MARGIN_DEFAULT;
177+ CefPdfPrintSettings.page_height := 0;
178+ CefPdfPrintSettings.page_width := 0;
179+ CefPdfPrintSettings.selection_only := 0;
180+
181+ Chromium.Browser.Host.PrintToPdf(UTF8Decode(SaveDialog1.FileName), CefPdfPrintSettings, Nil);
182+ end;
183+end;
208184```
209185
210-Die Beschreibung der einzelnen Settings finden Sie in der Deklaration von `TCefPdfPrintSettings`.
186+Die Beschreibung der einzelnen Settings finden Sie in der Deklaration von `TCefPdfPrintSettings`.
211187
212188## Bekannte Probleme
213189
214- * Wenn das Programm nicht gestartet werden kann, wird dieses möglicherweise von einem Antivirusprogramm verhindert.
215- * Wenn das Programm gestartet wird, das TChromiumfenster aber leer bleibt, kann eine Firewall möglicherweise der Verursacher sein (Siehe [Chromium Embedded Framework for Free Pascal (fpCEF3) BRUNCH 2556](<http://forum.lazarus.freepascal.org/index.php/topic,31361.0.html>)).
216- * Wenn die Dateistruktur nicht stimmt (Siehe Minimalbeispiel) und somit bestimmte Bibliotheken nicht geladen werden können, können Probleme bei der Darstellung auftauchen (Siehe [Fpcef red borders in the browser](<http://forum.lazarus.freepascal.org/index.php/topic,30763.0.html>)).
190+- Wenn das Programm nicht gestartet werden kann, wird dieses möglicherweise von einem Antivirusprogramm verhindert.
191+- Wenn das Programm gestartet wird, das TChromiumfenster aber leer bleibt, kann eine Firewall möglicherweise der Verursacher sein (Siehe [Chromium Embedded Framework for Free Pascal (fpCEF3) BRUNCH 2556](http://forum.lazarus.freepascal.org/index.php/topic,31361.0.html)).
192+- Wenn die Dateistruktur nicht stimmt (Siehe Minimalbeispiel) und somit bestimmte Bibliotheken nicht geladen werden können, können Probleme bei der Darstellung auftauchen (Siehe [Fpcef red borders in the browser](http://forum.lazarus.freepascal.org/index.php/topic,30763.0.html)).
217193
218194## Weitere Informationen
219195
220- * [Thread im deutschen Lazarusforum](<http://www.lazarusforum.de/viewtopic.php?f=18&t=7676>)
221- * [[Webbrowser]]
196+- [Thread im deutschen Lazarusforum](http://www.lazarusforum.de/viewtopic.php?f=18&t=7676)
197+- [[Webbrowser]]
222198
223-\--[Michl](</User:Michl> "User:Michl") 22:58, 1 June 2015 (CEST)
199+--Michl 22:58, 1 June 2015 (CEST)
224200
225201---
226-*From the Free Pascal wiki, page "fpCEF3/de", as the Internet Archive kept it on 2026-01-14. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
202+*From the Free Pascal wiki, page "fpCEF3/de", as it stood on 2020-02-16 after a change by GAN, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
203+Category: Components/de
204+Category: Deutsch
205+Category: LCL/de

Back to history