FMX.WebBrowser.TWebBrowser
Delphi
TWebBrowser = class(TCustomWebBrowser)
C++
class PASCALIMPLEMENTATION TWebBrowser : public TCustomWebBrowser
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
class | public | FMX.WebBrowser.pas FMX.WebBrowser.hpp |
FMX.WebBrowser | FMX.WebBrowser |
説明
TWebBrowser は Web ブラウザを定義したものです。
TWebBrowser は、Web コンテンツやローカル ファイルの読み込みと表示を行うためのビジュアル コンポーネントです。読み込む URL や読み込むファイルの名前は、URL プロパティで指定します。
TWebBrowser では、指定 URL への移動、戻る、進むといったブラウザの基本機能や、固有のイベントをサポートしています。
TWebBrowser にコンテンツを読み込んで表示するには、URL またはファイル名をパラメータとして Navigate メソッドを呼び出すか、URL プロパティを設定したあとパラメータなしで Navigate メソッドを呼び出します。
ローカル ファイルを読み込んで表示するには、表示するファイルを配置マネージャに追加して明示的に配置し、ファイル名の前に 'file://' という文字列を付けて Navigate メソッドを呼び出します。
ローカル ファイルの読み込みの例:
WebBrowser1.Navigate('file://MyFile.pdf')
メモ: TWebBrowser コンポーネントは、サポートされているすべてのターゲット プラットフォームで使用できます。
Windows プラットフォームでの JavaScript インテグレーションのサポート
Windows ターゲット プラットフォーム(WIN32 および WIN64)では、Web サイトが様々な用途のために、JavaScript のダイアログ ボックス、パネル、その他要素を使用している場合に、TWebBrowser が Web ページを正しく表示できない場合があります。
この問題を回避するには、アプリケーションは、Internet Explorer の FEATURE_BROWSER_EMULATION 機能を使用して、Web ページを IE11 エッジ モードで表示しなければなりません。
この機能を使用するには、MSDN に説明されているように、適切な変更を Windows レジストリで行います。
この手動による変更は、次のステップを実行することで適宜行えます:
- レジストリ エディタを開きます。
- 次のキーを開きます: HKEY_CURRENT_USER > Software > Microsoft > Internet Explorer > Main > FeatureControl > FEATURE_BROWSER_EMULATION
- [編集]メニューで、[新規作成]を差し、[DWORD (32-bit) 値]をクリックします。
- この新しいエントリの名前を、自分の実行可能ファイル名に変更します(MyApps.exe など)。
- 新たに作成されたエントリを選択して、[編集]メニューで、[修整]をクリックします。
- 開いた[編集]ダイアログ ボックスで、次を行います:
- [値のデータ]テキストボックスに 11011 と入力します。
- [表記]以下で、[10 進数]を選択します。
- [OK]をクリックして、変更を保存します。
また、アプリケーションが開始した際に、アプリケーションが上で説明した変更を行えるようにすることができます。たとえば、プロジェクトで、FormCreate イベント ハンドラは、次のような TForm1.SetPermissions メソッドを呼び出すことができます:
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
}
メモ: レジストリに対するこれらの変更は、アプリケーションが開始する前に適宜行わなければなりません。最初にアプリケーションを開始した際には、それを一度閉じ、再度開始します。