HTMLエディタを作る(8)(1999/05/23)

プレビューウィンドウを搭載してみたよ。仕様が固まってないので現状では使い勝手は良くないけど。とりあえずは出る問題を出してからと思っているので……

DelphiActiveXの取り込みにはなんやら問題があるようだ。多くのメソッドや、全部のイベントハンドラが機能してくれない。なんてこった! MFCだと、こういうのは初期化の時に各種設定をSendMessageすると思うんだけど、VClとの互換性を取ると難しいのだろうか?

ちなみにVBではちゃんと動くそうである。それは痛い。いっそのこと、IE4その物を起動してプロセスを監視したほうが良いかもしれない。TWebBrowserばかりに囚われる事はないはずだ……。

だいぶ前、この辺りの事を少し書いていた。その時のテストではSorcererと同程度の実装試験を行うに留まっていたのだが、実の所Sorcerer自身がTwebBrowserのこの様なバグに対処する形で、ああいった仕様にしてなるであって、決してシンプル化を目指したものではないようだ。

迂闊にも読み違えたものだから、情けない事にバクバグのプゥでのた打ち回ってしまった

テストの時の記事で以下のように書いた。

ここは素直にTStringListで履歴を保持していって、バッファが空の時にはGoBackしないという方法が正しいのではないかと思われる。
この方法は論理自体は間違いではないのだが、実際にやってみた所、できなかった。と言うより、URLを記録していった所で、その文字列をNavigateメソッドで処理する訳でもないのだ。まぁ、そういう風な動作を書く事で、要らぬエラーの発生を防ぐ事も出来るだろうが……できればIEの機能で実現したいのである

で、実際の実装においては、TStringListではなく、一つのInteger型変数にページを変更した回数を保持し、その範囲内ではGoBack/GoForwordできる、と言う処理だった。

思惑通りに行けば、OnNavigateCompleteイベントハンドラによってページ変更を捉える事が出来たのだが、どうも、表示するページによってはこのハンドラは何回も起動されるらしい。深く調べてはいないが、フレームを用いている場合には各フレームとフレーム定義ファイルの分がそれぞれ起動されていると思われる。

他のハンドラで代用するしかないのであろう。ううーん……。どうしたものか。



現在の進展状況
他のウインドウは前回掲載と同じデザインなので割愛

HotMilk version0.0.2.14