Sign in Join
Wiki copytemporary

fpCEF3/de: what changed

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

OldNewLine
11## Beschreibung
22
3-<img src="SimpleChromium.png" title="SimpleChromium.png" width="320" />
3+![](/wiki-images/b/b4/SimpleChromium.png)
44
55Chromium 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.
66
77Das 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.
88
99Es 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]]).
1010
1111## Installation
1212
1313Neben 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)
1414
1515Zum Zeitpunkt der Überarbeitung dieser Beschreibung (Mai 2016), ist CEF 3.2526.1373 das benötigte Framework.
1616
1717### Download Package
1818
1919fpCEF3 kann per [Git](http://git-scm.com/)
2020
2121[`git://github.com/dliw/fpCEF3.git`](git://github.com/dliw/fpCEF3.git)
2222
2323oder auch gezippt heruntergeladen (und in ein separates Verzeichnis entpackt) werden:
2424
2525[`master.zip`](https://github.com/dliw/fpCEF3/archive/master.zip)
2626
2727### Installation des Packages
2828
2929![](/wiki-images/3/33/Chromium.png)
3030
3131Nach dem Herunterladen des Packages fpCEF3, kann dieses in Lazarus installiert werden:
3232
3333- Starten Sie Lazarus und öffnen Sie im Hauptmenu *Package* -\> *Package-Datei (.lpk) öffnen ...*
3434- Wählen Sie fpCEF3-Verzeichnis das Unterverzeichnis *Component* und öffnen Sie die Datei *cef3.lpk*
3535- Das Packagebearbeitungsfenster wird geöffnet
3636- Klicken Sie auf *Kompilieren*. Das Package wird nun kompiliert
3737- Klicken Sie nun auf *Nutzung ...* -\> *Installieren* und bestätigen Sie das sich öffnende Fenster mit *Ja*
3838- Lazarus wird nun neu kompiliert und ein neuer Reiter *Chromium* in der Komponentenpalette erstellt
3939
4040### Download Framework CEF3
4141
4242Nun 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:\
4343[<https://cefbuilds.com>](https://cefbuilds.com)\
4444[<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))
4545
4646> **Note:** Unbedingt beachten, welche Frameworkversion mit dem aktuellen [fpCEF3](https://github.com/dliw/fpCEF3) genutzt werden kann! Siehe Installation
4747
4848## Verwendung
4949
5050### Minimalbeispiel
5151
5252Es wird ein Minimalbeispiel erstellt, dass die Verwendung als einfachen Browser zeigen soll.
5353
5454#### Windows
5555
5656Da 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.
5757
5858- Erstellen Sie mit dem Windows Explorer ein neues Verzeichnis für das Projekt an einen Ort Ihrer Wahl z.B. *C:\SimpleBrowser*
5959- Kopieren Sie das komplette CEF3-Verzeichnis *Resources* nach *C:\SimpleBrowser*
6060- Kopieren Sie den Inhalt vom CEF3-Verzeichnis *Release* in das Verzeichnis *C:\SimpleBrowser*
6161
6262Die 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*.\
6363Um Missverständnisse zu vermeiden ist hier nochmal die Dateistruktur für den Simplebrowser als Bild beigefügt:\
6464
6565![](/wiki-images/a/aa/FilesForSimplebrowser.png)\
6666
6767Erstellen Sie nun das Projekt mit Lazarus
6868
6969- Erstellen Sie eine neue leere [[Form Tutorial/de|GUI-Anwendung]]
7070- Speichern Sie das Projekt in das von Ihnen festgelegte Verzeichnis z.B. für Windows unter *C:\SimpleBrowser*
7171- 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
7272- Beschriften Sie die `ButtonCaption` mit `Go`
7373- Legen Sie nun noch ein `TChromium` auf dem Formular ab und geben diesen den Namen `Chromium` und stellen dessen `Align` auf `alClient`
7474- 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
7575- Schreiben Sie folgenden Code (Chromium soll bei jedem Klick die im Textfeld hinterlegte URL öffnen):
7676
7777``` pascal
7878procedure TForm1.edtURLClick(Sender: TObject);
7979begin
8080 Chromium.Load(UTF8Decode(edtURL.Text));
8181end;
8282```
8383
8484- Beim Start des Programms muss `Chromium` initialisiert werden, dazu können Sie den `OnCreate`-Eventhandler des Formulars nutzen:
8585
8686``` pascal
8787procedure TForm1.FormCreate(Sender: TObject);
8888var
8989 PrjPath: ustring;
9090 Lang, FallbackLang: string;
9191begin
9292 PrjPath := UTF8Decode(GetCurrentDir + PathDelim);
9393 CefLocalesDirPath := PrjPath + 'locales';
9494 GetLanguageIDs(Lang, FallbackLang);
9595 CefLocale := UTF8Decode(FallbackLang);
9696 edtURL.Text:='http://www.lazarus-ide.org/';
9797end;
9898```
9999
100100- Sollte ein Bezeichner nicht gefunden werden, so muss möglicherweise noch eine Unit in die Uses-Clause aufgenommen werden z.B.:
101101
102102``` pascal
103103uses
104104 sysutils, Forms, EditBtn, cef3lcl, cef3intf, cef3types, cef3lib, gettext;
105105```
106106
107107- Starten Sie Ihr Programm, wenn alles gut läuft könnte es so aussehen:
108108
109109![](/wiki-images/b/b4/SimpleChromium.png)\
110110
111111### Zeige URL der geladenen Seite
112112
113113Basierend auf dem Minimalbeispiel
114114
115115- Erstellen Sie für `Chromium` den `OnLoadEnd`-Eventhandler
116116- Schreiben Sie folgenden Code (URL soll nach jedem browsen aktualisiert werden):
117117
118118``` pascal
119119procedure TForm1.ChromiumLoadEnd(Sender: TObject; const Browser: ICefBrowser;
120120 const Frame: ICefFrame; httpStatusCode: Integer);
121121begin
122122 edtURL.Text:=UTF8Encode(Browser.MainFrame.Url);
123123end;
124124```
125125
126126### Download von Dateien ermöglichen
127127
128128- Erstellen Sie für `Chromium` den `OnBeforeDownload`-Eventhandler und fügen Sie ein:
129129
130130``` pascal
131131procedure TForm1.ChromiumBeforeDownload(Sender: TObject;
132132 const Browser: ICefBrowser; const downloadItem: ICefDownloadItem;
133133 const suggestedName: ustring; const callback: ICefBeforeDownloadCallback);
134134begin
135135 callback.Cont(suggestedName, True);
136136end;
137137```
138138
139139### Drucken per Code
140140
141141- Fügen Sie ein `TButton` auf Ihr Formular ein und schreiben in dessen `OnClick` Ereignisbehandlungsroutine:
142142
143143``` pascal
144144procedure TForm1.Button1Click(Sender: TObject);
145145begin
146146 Chromium.Browser.Host.Print;
147147end;
148148```
149149
150150### Erstellen eines PDFs
151151
152152- Fügen Sie ein `TSaveDialog` Ihrem Formular hinzu
153153- Fügen Sie ein `TButton` Ihrem Formular hinzu und schreiben in dessen `OnClick` Ereignisbehandlungsroutine:
154154
155155``` pascal
156156procedure TForm1.Button1Click(Sender: TObject);
157157var
158158 CefPdfPrintSettings: TCefPdfPrintSettings;
159159 EmptyCefStringUtf16: TCefStringUtf16;
160160begin
161161 SaveDialog1.DefaultExt := 'pdf';
162162 SaveDialog1.Filter := 'Portable Document Format (pdf)|*.pdf';
163163 if SaveDialog1.Execute then
164164 begin
165165 FillByte(EmptyCefStringUtf16, SizeOf(EmptyCefStringUtf16), 0);
166166
167167 CefPdfPrintSettings.backgrounds_enabled := 1;
168168 CefPdfPrintSettings.header_footer_enabled := 0;
169169 CefPdfPrintSettings.header_footer_title := EmptyCefStringUtf16;
170170 CefPdfPrintSettings.header_footer_url := EmptyCefStringUtf16;
171171 CefPdfPrintSettings.landscape := 0;
172172 CefPdfPrintSettings.margin_bottom := 0;
173173 CefPdfPrintSettings.margin_left := 0;
174174 CefPdfPrintSettings.margin_right := 0;
175175 CefPdfPrintSettings.margin_top := 0;
176176 CefPdfPrintSettings.margin_type := PDF_PRINT_MARGIN_DEFAULT;
177177 CefPdfPrintSettings.page_height := 0;
178178 CefPdfPrintSettings.page_width := 0;
179179 CefPdfPrintSettings.selection_only := 0;
180180
181181 Chromium.Browser.Host.PrintToPdf(UTF8Decode(SaveDialog1.FileName), CefPdfPrintSettings, Nil);
182182 end;
183183end;
184184```
185185
186186Die Beschreibung der einzelnen Settings finden Sie in der Deklaration von `TCefPdfPrintSettings`.
187187
188188## Bekannte Probleme
189189
190190- Wenn das Programm nicht gestartet werden kann, wird dieses möglicherweise von einem Antivirusprogramm verhindert.
191191- 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)).
192192- 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)).
193193
194194## Weitere Informationen
195195
196196- [Thread im deutschen Lazarusforum](http://www.lazarusforum.de/viewtopic.php?f=18&t=7676)
197197- [[Webbrowser]]
198198
199199--Michl 22:58, 1 June 2015 (CEST)
200200
201201---
202202*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).*
203203Category: Components/de
204204Category: Deutsch
205205Category: LCL/de

Back to history