FMX.WebBrowser.TWebBrowser
Delphi
TWebBrowser = class(TCustomWebBrowser)
C++
class PASCALIMPLEMENTATION TWebBrowser : public TCustomWebBrowser
Sommaire
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
class | public | FMX.WebBrowser.pas FMX.WebBrowser.hpp |
FMX.WebBrowser | FMX.WebBrowser |
Description
TWebBrowser définit un navigateur web.
TWebBrowser est un composant visuel qui permet le chargement et l'affichage de contenu web ou de fichiers locaux. L'URL chargée ou le nom du fichier chargé est spécifié via la propriété URL.
TWebBrowser procure la prise en charge des fonctions de base d'un navigateur : navigation vers l'URL, Précédent, Suivant, ainsi que les événements spécifiques.
Pour charger et afficher du contenu dans TWebBrowser, appelez la méthode Navigate avec l'URL ou le nom de fichier comme paramètre ou définissez la propriété URL, puis appelez la méthode Navigate sans aucun paramètre.
Pour charger et afficher des fichiers locaux, déployez explicitement le fichier devant être affiché en l'ajoutant au Gestionnaire de déploiement et ajoutez la chaîne 'file://' avant le nom du fichier, lors de l'appel à la méthode Navigate.
Exemple de chargement d'un fichier local :
WebBrowser1.Navigate('file://MyFile.pdf')
Prise en charge de JavaScript Integration sur la plate-forme Windows
Sur les plates-formes cible Windows (WIN32 et WIN64), TWebBrowser peut ne pas afficher correctement certaines pages Web si un site web utilise des boîtes de dialogue, panneaux et d'autres élément JavaScript pour différentes raisons.
Pour contourner ce problème, votre application doit afficher les pages web dans le mode edge de IE11 en utilisant la fonctionnalité FEATURE_BROWSER_EMULATION de Internet Explorer.
Pour utiliser cette fonctionnalité, effectuez les modifications appropriées dans le registre Windows, comme décrit dans MSDN (EN).
Vous pouvez effectuez les modifications appropriées manuellement en effectuant les étapes suivantes :
- Ouvrez l'éditeur du registre.
- Ouvrez la clé suivante : HKEY_CURRENT_USER > Software > Microsoft > Internet Explorer > Main > FeatureControl > FEATURE_BROWSER_EMULATION.
- Dans le menu Edition, sélectionnez Nouveau, puis cliquez sur Valeur DWORD (32 bits).
- Définissez le nom de cette nouvelle entrée sur le nom de votre fichier exécutable, tel que MyApps.exe.
- Sélectionnez l'entrée nouvellement créée, et cliquez sur Modifier dans le menu Edition.
- Dans la boîte de dialogue Edition qui s'ouvre, suivez les étapes ci-après :
- Dans la zone de texte Données de la valeur, entrez 11011.
- Sous Base, sélectionnez Décimal.
- Cliquez sur OK pour enregistrer les modifications.
Vous pouvez également permettre à votre application d'effectuer les modifications décrites ci-dessus au démarrage de l'application. Par exemple, dans votre projet, le gestionnaire d'événement FormCreate peut appelez la méthode TForm1.SetPermissions suivante :
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
}