Sign in Join
Wiki copytemporary

fpCEF3/de: what changed

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

OldNewLine
11## Beschreibung
22
33![](/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
21-[`git://github.com/dliw/fpCEF3.git`](git://github.com/dliw/fpCEF3.git)
21+```text
22+git://github.com/dliw/fpCEF3.git
23+```
2224
2325oder auch gezippt heruntergeladen (und in ein separates Verzeichnis entpackt) werden:
2426
25-[`master.zip`](https://github.com/dliw/fpCEF3/archive/master.zip)
27+```text
28+master.zip
29+```
2630
2731### Installation des Packages
2832
2933![](/wiki-images/3/33/Chromium.png)
3034
3135Nach dem Herunterladen des Packages fpCEF3, kann dieses in Lazarus installiert werden:
3236
3337- Starten Sie Lazarus und öffnen Sie im Hauptmenu *Package* -\> *Package-Datei (.lpk) öffnen ...*
3438- Wählen Sie fpCEF3-Verzeichnis das Unterverzeichnis *Component* und öffnen Sie die Datei *cef3.lpk*
3539- Das Packagebearbeitungsfenster wird geöffnet
3640- Klicken Sie auf *Kompilieren*. Das Package wird nun kompiliert
3741- Klicken Sie nun auf *Nutzung ...* -\> *Installieren* und bestätigen Sie das sich öffnende Fenster mit *Ja*
3842- Lazarus wird nun neu kompiliert und ein neuer Reiter *Chromium* in der Komponentenpalette erstellt
3943
4044### Download Framework CEF3
4145
4246Nun 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:\
4347[<https://cefbuilds.com>](https://cefbuilds.com)\
4448[<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))
4549
4650> **Note:** Unbedingt beachten, welche Frameworkversion mit dem aktuellen [fpCEF3](https://github.com/dliw/fpCEF3) genutzt werden kann! Siehe Installation
4751
4852## Verwendung
4953
5054### Minimalbeispiel
5155
5256Es wird ein Minimalbeispiel erstellt, dass die Verwendung als einfachen Browser zeigen soll.
5357
5458#### Windows
5559
5660Da 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.
5761
5862- Erstellen Sie mit dem Windows Explorer ein neues Verzeichnis für das Projekt an einen Ort Ihrer Wahl z.B. *C:\SimpleBrowser*
5963- Kopieren Sie das komplette CEF3-Verzeichnis *Resources* nach *C:\SimpleBrowser*
6064- Kopieren Sie den Inhalt vom CEF3-Verzeichnis *Release* in das Verzeichnis *C:\SimpleBrowser*
6165
6266Die 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*.\
6367Um Missverständnisse zu vermeiden ist hier nochmal die Dateistruktur für den Simplebrowser als Bild beigefügt:\
6468
6569![](/wiki-images/a/aa/FilesForSimplebrowser.png)\
6670
6771Erstellen Sie nun das Projekt mit Lazarus
6872
6973- Erstellen Sie eine neue leere [[Form Tutorial/de|GUI-Anwendung]]
7074- Speichern Sie das Projekt in das von Ihnen festgelegte Verzeichnis z.B. für Windows unter *C:\SimpleBrowser*
7175- 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
7276- Beschriften Sie die `ButtonCaption` mit `Go`
7377- Legen Sie nun noch ein `TChromium` auf dem Formular ab und geben diesen den Namen `Chromium` und stellen dessen `Align` auf `alClient`
7478- 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
7579- Schreiben Sie folgenden Code (Chromium soll bei jedem Klick die im Textfeld hinterlegte URL öffnen):
7680
7781``` pascal
7882procedure TForm1.edtURLClick(Sender: TObject);
7983begin
8084 Chromium.Load(UTF8Decode(edtURL.Text));
8185end;
8286```
8387
8488- Beim Start des Programms muss `Chromium` initialisiert werden, dazu können Sie den `OnCreate`-Eventhandler des Formulars nutzen:
8589
8690``` pascal
8791procedure TForm1.FormCreate(Sender: TObject);
8892var
8993 PrjPath: ustring;
9094 Lang, FallbackLang: string;
9195begin
9296 PrjPath := UTF8Decode(GetCurrentDir + PathDelim);
9397 CefLocalesDirPath := PrjPath + 'locales';
9498 GetLanguageIDs(Lang, FallbackLang);
9599 CefLocale := UTF8Decode(FallbackLang);
96100 edtURL.Text:='http://www.lazarus-ide.org/';
97101end;
98102```
99103
100104- Sollte ein Bezeichner nicht gefunden werden, so muss möglicherweise noch eine Unit in die Uses-Clause aufgenommen werden z.B.:
101105
102106``` pascal
103107uses
104108 sysutils, Forms, EditBtn, cef3lcl, cef3intf, cef3types, cef3lib, gettext;
105109```
106110
107111- Starten Sie Ihr Programm, wenn alles gut läuft könnte es so aussehen:
108112
109113![](/wiki-images/b/b4/SimpleChromium.png)\
110114
111115### Zeige URL der geladenen Seite
112116
113117Basierend auf dem Minimalbeispiel
114118
115119- Erstellen Sie für `Chromium` den `OnLoadEnd`-Eventhandler
116120- Schreiben Sie folgenden Code (URL soll nach jedem browsen aktualisiert werden):
117121
118122``` pascal
119123procedure TForm1.ChromiumLoadEnd(Sender: TObject; const Browser: ICefBrowser;
120124 const Frame: ICefFrame; httpStatusCode: Integer);
121125begin
122126 edtURL.Text:=UTF8Encode(Browser.MainFrame.Url);
123127end;
124128```
125129
126130### Download von Dateien ermöglichen
127131
128132- Erstellen Sie für `Chromium` den `OnBeforeDownload`-Eventhandler und fügen Sie ein:
129133
130134``` pascal
131135procedure TForm1.ChromiumBeforeDownload(Sender: TObject;
132136 const Browser: ICefBrowser; const downloadItem: ICefDownloadItem;
133137 const suggestedName: ustring; const callback: ICefBeforeDownloadCallback);
134138begin
135139 callback.Cont(suggestedName, True);
136140end;
137141```
138142
139143### Drucken per Code
140144
141145- Fügen Sie ein `TButton` auf Ihr Formular ein und schreiben in dessen `OnClick` Ereignisbehandlungsroutine:
142146
143147``` pascal
144148procedure TForm1.Button1Click(Sender: TObject);
145149begin
146150 Chromium.Browser.Host.Print;
147151end;
148152```
149153
150154### Erstellen eines PDFs
151155
152156- Fügen Sie ein `TSaveDialog` Ihrem Formular hinzu
153157- Fügen Sie ein `TButton` Ihrem Formular hinzu und schreiben in dessen `OnClick` Ereignisbehandlungsroutine:
154158
155159``` pascal
156160procedure TForm1.Button1Click(Sender: TObject);
157161var
158162 CefPdfPrintSettings: TCefPdfPrintSettings;
159163 EmptyCefStringUtf16: TCefStringUtf16;
160164begin
161165 SaveDialog1.DefaultExt := 'pdf';
162166 SaveDialog1.Filter := 'Portable Document Format (pdf)|*.pdf';
163167 if SaveDialog1.Execute then
164168 begin
165169 FillByte(EmptyCefStringUtf16, SizeOf(EmptyCefStringUtf16), 0);
166170
167171 CefPdfPrintSettings.backgrounds_enabled := 1;
168172 CefPdfPrintSettings.header_footer_enabled := 0;
169173 CefPdfPrintSettings.header_footer_title := EmptyCefStringUtf16;
170174 CefPdfPrintSettings.header_footer_url := EmptyCefStringUtf16;
171175 CefPdfPrintSettings.landscape := 0;
172176 CefPdfPrintSettings.margin_bottom := 0;
173177 CefPdfPrintSettings.margin_left := 0;
174178 CefPdfPrintSettings.margin_right := 0;
175179 CefPdfPrintSettings.margin_top := 0;
176180 CefPdfPrintSettings.margin_type := PDF_PRINT_MARGIN_DEFAULT;
177181 CefPdfPrintSettings.page_height := 0;
178182 CefPdfPrintSettings.page_width := 0;
179183 CefPdfPrintSettings.selection_only := 0;
180184
181185 Chromium.Browser.Host.PrintToPdf(UTF8Decode(SaveDialog1.FileName), CefPdfPrintSettings, Nil);
182186 end;
183187end;
184188```
185189
186190Die Beschreibung der einzelnen Settings finden Sie in der Deklaration von `TCefPdfPrintSettings`.
187191
188192## Bekannte Probleme
189193
190194- Wenn das Programm nicht gestartet werden kann, wird dieses möglicherweise von einem Antivirusprogramm verhindert.
191195- 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)).
192196- 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)).
193197
194198## Weitere Informationen
195199
196200- [Thread im deutschen Lazarusforum](http://www.lazarusforum.de/viewtopic.php?f=18&t=7676)
197201- [[Webbrowser]]
198202
199203--Michl 22:58, 1 June 2015 (CEST)
200204
201205---
202206*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).*
203207Category: Components/de
204208Category: Deutsch
205209Category: LCL/de

Back to history