FMX.WebBrowser.TWebBrowser
Delphi
TWebBrowser = class(TCustomWebBrowser)
C++
class PASCALIMPLEMENTATION TWebBrowser : public TCustomWebBrowser
Inhaltsverzeichnis
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
class | public | FMX.WebBrowser.pas FMX.WebBrowser.hpp |
FMX.WebBrowser | FMX.WebBrowser |
Beschreibung
TWebBrowser definiert einen Webbrowser.
TWebBrowser ist eine visuelle Komponente, die das Laden und Anzeigen von Webinhalt oder lokalen Dateien ermöglicht. Der geladene URL oder der Name der geladenen Datei wird in der Eigenschaft URL angegeben.
TWebBrowser unterstützt die grundlegenden Funktionen eines Browsers, wie z. B.: Navigieren zum URL, Zurück, Vorwärts sowie bestimmte Ereignisse.
Um Inhalt in TWebBrowser zu laden und anzuzeigen, rufen Sie die Methode Navigate mit dem URL oder dem Dateinamen als Parameter auf, oder legen Sie die Eigenschaft URL fest, und rufen Sie die Methode Navigate ohne Parameter auf.
Um lokale Dateien zu laden und anzuzeigen, stellen Sie die anzuzeigende Datei explizit bereit, indem Sie sie dem Bereitstellungs-Manager hinzufügen und beim Aufrufen der Methode Navigate vor dem Dateinamen den String "file://" einfügen.
Beispiel für das Laden einer lokalen Datei:
WebBrowser1.Navigate('file://MyFile.pdf')
Unterstützen von JavaScript-Integration auf Windows-Plattformen
Auf Windows-Zielplattformen (WIN32 und WIN64) kann TWebBrowser einige Webseiten inkorrekt anzeigen, wenn eine Webseite JavaScript-Dialogfelder, Tafeln und andere Elemente für verschiedene Zwecke verwendet.
Um dieses Problem zu umgehen, sollte Ihre Anwendung Webseiten im IE11-Edge-Modus mit dem FEATURE_BROWSER_EMULATION-Feature von Internet Explorer verwenden.
Um dieses Feature zu verwenden, nehmen Sie die angemessenen Änderungen an der Windows-Registrierung, wie in MSDN beschrieben, vor.
Sie können angemessene Änderungen manuell durch Ausführen der folgenden Schritte vornehmen:
- Öffnen Sie den Registrierungs-Editor.
- Öffnen Sie den folgenden Schlüssel: HKEY_CURRENT_USER > Software > Microsoft > Internet Explorer > Main > FeatureControl > FEATURE_BROWSER_EMULATION.
- Zeigen Sie im Menü Bearbeiten auf Neu und klicken Sie dann auf DWORD- (32-Bit) Wert.
- Setzen Sie den Namen dieses neuen Eintrags auf Ihren ausführbaren Dateinamen, wie MyApps.exe.
- Wählen Sie den neu erstellten Eintrag, und klicken Sie im Menü Bearbeiten auf Ändern.
- Im Dialogfeld Bearbeiten, das geöffnet wird, führen Sie Folgendes durch:
- Geben Sie im Textfeld Wertdaten 11011 ein.
- Wählen Sie unter Basis Dezimal.
- Klicken Sie auf OK, um Ihre Änderungen zu speichern.
Dies veranlasst, dass Ihre Anwendung die oben genannten Änderungen durchführt, wenn die Anwendung gestartet wird. So kann z. B. die Ereignisbehandlungsroutine FormCreate in Ihrem Projekt die folgende TForm1.SetPermissions-Methode aufrufen:
procedure TForm1.FormCreate(Sender: TObject);
begin
{$IFDEF MSWINDOWS}
SetPermissions;
{$ENDIF}
end;
{$IFDEF MSWINDOWS}
procedure TForm1.SetPermissions;
const
cHomePath = 'SOFTWARE';
cFeatureBrowserEmulation =
'Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\';
cIE11 = 11001;
var
Reg: TRegIniFile;
sKey: string;
begin
sKey := ExtractFileName(ParamStr(0));
Reg := TRegIniFile.Create(cHomePath);
try
if Reg.OpenKey(cFeatureBrowserEmulation, True) and
not(TRegistry(Reg).KeyExists(sKey) and (TRegistry(Reg).ReadInteger(sKey)
= cIE11)) then
TRegistry(Reg).WriteInteger(sKey, cIE11);
finally
Reg.Free;
end;
end;
{$ENDIF}
void __fastcall TForm1::FormCreate(TObject *Sender) {
SetPermissions();
}
void __fastcall TForm1::SetPermissions() {
#ifdef _Windows
UnicodeString cHomePath = "SOFTWARE";
UnicodeString cFeatureBrowserEmulation =
"Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION\\";
int cIE11 = 11001;
UnicodeString sKey = ExtractFileName(ParamStr(0));
TRegIniFile *Reg = new TRegIniFile(cHomePath);
__try {
TRegistry *reg1 = dynamic_cast<TRegistry*>(Reg);
if (Reg->OpenKey(cFeatureBrowserEmulation,
true) && !(reg1->KeyExists(sKey) && reg1->ReadInteger(sKey)
== cIE11)) {
reg1->WriteInteger(sKey, cIE11);
}
}
__finally {
Reg->Free();
}
#endif
}