HTMLエディタを作る(2)(1999/03/11)

お久しぶりです 一月も音沙汰なく、一体何をしていたかと言うと……何もしてなかったんだなコレが。

で某掲示板で名前が挙がるじゃない……実際、焦ったよ。いやホントに読まれてると思ってなかったから() ちう訳で、とりあえず再開だ。



前々回の終わりで問題としていた着色後の保存の問題だが、これアッサリと解決しちゃってたりする。
この問題は、リッチエディットコンポーネントで文字に装飾を施すと、その後のセーブデータにはキッチリとRTFタグが混ざってしまうという物なのだが、かなりマジで手動でタグを撤去するっきゃないかとさえ思った。

だが……何気に思いついた方法で、TRichEdit.Textにはプレーンなテキストが格納されているので、これをファイルとして保存すれば良かったのだ。TRichEdit.Lines.Textの方はRTFタグが含まれていて、これだけでもう諦めていたのだが。

かくして、着色に関しての大きな問題の一つは解決を見た。しかし、次の問題はこれまた難易度が高い様だ。



InsideWindows’98年12月号掲載のDelphiの神託によれば、Delphiのリッチエディットコンポーネントには実は構文解析機能(パーサーと呼ばれる)が付いており、文字列や数値、識別子などを区分けして個別に着色することができる。早い話、Delphi自身のエディタはこれによって着色されているのである。ならば、タグに色を付けるのはこれを改造すれば良かろう。

狙いは間違ってはいなかった。IW誌の記事を参考に、Delphiのソースコードを統合環境と同じように色分けして表示するサンプルを元に、コメント部分を少し書き換えただけでタグを色分けする事が出来た。俺って天才? だが……。

もちろんそれだけで満足はしていなかった。色分けが出来るだけならWzEditorでもいいのだ。しかしWZエディタでは、タグは中の構造に関わらず単色で表示するのだが、やはり数値や文字列は別の色を表示したい。したいしたいしたい

色々と試したのだが、RTF形式そのものが「文字列の途中の部分だけ一時的にアトビリュートを替える」と言う事が出来ない事から、タグの中のダブルクォーテーションで囲まれた部分を着色すると、その後の属性を戻すのに大変なのである。HTMLタグであれば、</FONT>等として元の属性にも戻せるのだが……

ClassesユニットのTParserクラスや先のIW誌のサンプルなどをご覧になれば判るのだが、解析処理の構造上、直前の状態を記録しておくのが中々難しいので、この問題は当分棚上げである。

小さな問題としては、昔のテキストエディタのように改行文字(↓)を表示したいけど、そんなこと出来るのかなぁとか、アンダーラインも要るよねとか、そんな見た目だけの事でね



ともかく色は色としてついたのだから、次のステップはブラウザへの切り替え部の導入にする。エディタとしての充実はインターフェースが整ってからだ……。ブラウザに関しては既に試験を行っていた事も有って、比較的問題なく実装できるものと期待したいところ。

ブラウザとの切り替えはメニューだけでなく、ショートカットキーでもできるようになる。ただブラウザ側からの復帰がネックとなりそうだ。というのは要するにIE4ブラウザを貼り付けるのだからキー処理をそっちに奪われる可能性がある……最悪、Application.OnMessageを処理すれば何とかなるはずなのだが。出来ればそんな泥臭い事には手を出さないで済ませたいものだ(笑)

現在の進展状況
HotMilk version0.0.0.4HotMilk version0.0.0.4