開発ブログ - FireMonkey + MacOSXで TWebBrowser

FireMonkey + MacOSXで TWebBrowser

カテゴリ : 
技術メモ » Delphi » FireMonkey
執筆 : 
2013/12/22

以前 Delphi ML に FireMonkey + MacOSX で TWebBrowser を使いたいという投稿が流れていました。
stackoverflow にあるコードで WebView を使ってみたが、画面に表示されなかったということでした。
そのときに提示されたURLが↓
webview-not-displaying-in-macos-using-delphi-xe2(stackoverflow)

ようやく少し余裕ができたので、自分でも試してみることにしました。

確かにコードの通りやってもうまく行きません。
そもそも view が表示されているように見えないのです。
これについては addSubview が必要なのでは?と見当をつけてみました。
さらに念のために setHostWindow もしてみます。
ここまでは、stackoverflow のコメントにあったのと同じですね。
NSView などを取得するのが XE5 では XE2 より簡単にできるようになっています。

   var
       view: NSView;
   begin
    ...
   view := WindowsHandleToPlatform(Self.Handle).View;
   view.addSubview(WebView);
   WebView.setHostWindow(view.window);

これでとりあえず window は表示されるようになりました。
問題は WebView.mainFram.loadRequest をしても、何も表示されないことです。
どうもおかしいですね。loadHTMLString でもだめでした。
代わりに setMainFrameURL を使ってみると、おぉ!!!うまく表示されましたよ!!!

ということは NSURLなどの作り方が問題なのでしょう。

  urlStr := TNSURL.Wrap(TNSURL.OCClass.URLWithString(NSSTR(AUrl)));
  urlReq := TNSURLRequest.Wrap(TNSURLRequest.OCClass.requestWithURL(urlStr));
  view.mainFrame.loadRequest(urlReq);

という具合に修正したら、うまく動くようになりました。

  • コメント (0)
  • トラックバック (0)

コメントの投稿

お気軽にコメントください : 投稿されたコメントは承認後に表示されます
プロダクツ

開発ブログ

Link

AD