FMX TWebBrowser exampleサンプルブログラム


2017.6.11更新

FireMonkey(FMX) TWebBrowser
TWebBrowser(FMX) : エンバカデロのオンラインヘルプ
無料のC++ Builder 10.1 Berlin Starter Edition で動作確認しました。
Windowsでコンパイル、実行ができます。
(上位エディションならMac OS X用としてもコンパイルできるはず。)
FireMonkey(FMX)のTWebBrowserはクロスプラットフォームのウェブブラウザのコンポーネントです。
このサンプルはウェブブラウザです。
サンプルでは表示に日本語を使っていませんが日本語を含む世界の文字が使えます。
ハンバーリンクの文字列を取得とか、ハイパーリンクのクリック処理を変更するとか、右クリックメニューを変更したりHTMLソースを取得するなどの方法が(私には)分かりません。
できないのではないかと思います。
特筆すべき機能はHTMLを変数からセットするLoadFromStringsメソッドと、Javascriptを実行するEvaluateJavaScriptメソッドがあることです。
Starter EditionのFireMonkey(FMX)にはTWebBrowserがありますが、Starter EditionのVCLにはTWebBrowserがありません。
VCLの上位エディションにはTWebBrowserがありますが、FireMonkey(FMX)のTWebBrowserとは機能や使い方が全く異なります。
VCLでTWebBrowserを実用的に使うには、C++ BuilderXE8までのバージョンでProfessional以上のエディションでC++ Builder 2009または2010に入っているATLライブラリが必要だと思います。
VCLはWindowsのみで動作します。
このサンプルはWindowsで確認しましたが、C++ BuilderのProfessional以上のエディションを使えばMac OS Xでもこのソースで多分動作します。
メニューバーの処理を外すなどの改造をすれば、C++ Builderのモバイル対応のエディションを使うことによりAndroidやiPhoneで動くようにできると思います。
GNU/Linux + wine 2.0.1でもそれなりには動きました。(Windowsと同じようには動いていない。)
FireMonkey(FMX) TWebBrowser サンプルexample
//--------------------------------------------------------------------------- #include <fmx.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.fmx" TForm1 *Form1; UnicodeString Defaulthtml = u"<html><body>" u"<font size=\"+3\" color=\"green\">FireMonkey(FMX) TWebBrwoser example.</font><br>\n" u"<font size=\"+2\" color=\"blue\">for C++ Builder 10.1 Berlin Starter Edition</font><br>\n" u"<font size=\"+1\" color=\"red\">Web Browser software.</font><br><br>\n" u"<a href=\"http://www.nabeta.tk\">http://www.nabeta.tk</a>\n</body></html>"; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonGoClick(TObject *Sender) { WebBrowser1->Navigate(Edit1->Text); } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key, System::WideChar &KeyChar, TShiftState Shift) { if(Key == (WORD)0x0d || Key == (WORD)0x0a){ if(Edit1->Text != u""){ WebBrowser1->Navigate(Edit1->Text); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonBackClick(TObject *Sender) { WebBrowser1->GoBack(); } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonForwardClick(TObject *Sender) { WebBrowser1->GoForward(); } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonReloadClick(TObject *Sender) { WebBrowser1->Reload(); } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonStopClick(TObject *Sender) { WebBrowser1->Stop(); } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonHomeClick(TObject *Sender) { WebBrowser1->Navigate(u"http://www.nabeta.tk"); } //--------------------------------------------------------------------------- void __fastcall TForm1::MenuItemExitClick(TObject *Sender) { Close();//Program End } //--------------------------------------------------------------------------- void __fastcall TForm1::MenuItemSetSourceClick(TObject *Sender) { //Set HTML WebBrowser1->LoadFromStrings(Defaulthtml,u""); } //--------------------------------------------------------------------------- void __fastcall TForm1::MenuItemDisableRightClickClick(TObject *Sender) { //Disable WebBrowser1 Right CLick by Javascript. reset=reload //WebBrowser1の右クリックをJavascriptで禁止する。 //ページを開いてからのみ有効。リロードで消える WebBrowser1->EvaluateJavaScript(u"document.oncontextmenu = function(){return false;}"); WebBrowser1->EvaluateJavaScript(u"window.alert(\"今のブラウザの表示ページで" u"右クリックを禁止しました。リロードで設定は消えます。\");"); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { WebBrowser1->LoadFromStrings(Defaulthtml,u""); } //--------------------------------------------------------------------------- void __fastcall TForm1::MenuItemAboutClick(TObject *Sender) { MessageDlg(u"C++ Builder Berlin Starter Edition TWebBrowser example" u"\nhttp://www.nabeta.tk", TMsgDlgType::mtInformation /* mtError */, TMsgDlgButtons() << TMsgDlgBtn::mbOK, 0); } //---------------------------------------------------------------------------

ソースファイルも用意しています。
プロジェクトファイル、ヘッダファイル、画面設計ファイルを含むコンパイルするための全てのファイルがあります。
実行ファイルも入れています。
FireMonkey(FMX) TWebBrowser ソースファイルダウンロードsource file download

C++ Builder 10.1 Berlin Starter Edition サンプルブログラム example

C言語の話


あーすブラウザ
オンライン鍋田辞書
鍋田辞書トップ