2025年05月26日

Delphi の TEdgeBrowser を使いたい!

Delphi で TEdgeBrowser コンポーネントを使うと、Chromium ブラウザの機能を自作アプリに搭載できるというのは、とても魅力的。既存のJavaScript フレームワークを使って、リッチな画面描画もできる。
 でも、そのアプリの中のDelphi側でマウス操作のイベントを掴んでなにか操作を行うのはちょいと難しいらしく、Web検索ではその方法が解らなかった。何やら Timer を使ってごにょごにょやると実現できるらしいのだが、具体的にはわからん。

 そういうときは、同一アプリにWebサーバーの機能とブラウザの機能を両方付けてしまえばいい。

 ブラウザ側でリンクを踏んで、イベントをつかんだら、JavaScriptでデータをWebサーバーに送ることができる。サーバー側でそれを受け取ったら、それに応じて処理を行えばいいのだ。
 ということに気づき、早速実装。
 アプリにWebサーバーを搭載するのと、いままで使っていた TWebBrowser をTEdgeBrowserに交換するのを両方いっぺんにやったので、結構大がかりな改変になったが、動けば大満足。画面描画も美しい。

 非同期通信だから、Webサーバー側でイベントを受け取ったあとの処理は、自分自身にWindowsメッセージを送信して、Windowsアプリ部分でメッセージを受け取り、ダイアログ画面をだす。なんてことが必要になることもある。その辺がポイントかな。ちょっとややこしいが、なんだか高度なことをやってる気になれるので、その分できあがった時の喜びも大きい。



 
posted by sjoe at 13:37| 日記