HTMLエディタを作る(11)(1999/09/04)
新着情報 トップメニュー ボートメニュー 掲示板 お手紙はここ!

2ヶ月以上も放置してました…少しはやってたんですけど、マザーボード買い替えやらその設定やらで時間を取られまくってたもんで
少しずつですが完成に近づいている……と、思うんですが。



ツールバーの仕様が確定しまたのよね 普通っぽいカスタマイズは当面、見送り!(笑) 右クリックでコンテキストメニューを出して、各ボタン毎に編集できるようにしてみた。もちろん、バンドの作成も自在だしバンド間でボタンを移動したりコピーしたりできまする!(とかって別に大した事はしてないけど、面白い算譜だったと思ってる)

この右クリックのメニューてのが割と厄介だったなぁ。何せ、全部で一個のポップアップメニューを使おうとすると、どのボタンで呼び出したのか解らない……TPopupMenu.OnClick イベントは、この場合 Sender にはホップアップメニュー自体が入るのだよ。かと言って、ボタン毎にメニューを作成してイベントハンドラだけを共有するってのも……。

なんてコトを考えてたら、TPopupMenu.PopupComponent と言うプロパティには呼び出したコンポーネントが格納されているではないか! 素晴らしい!! 従って、TPopupMenu.OnClickのハンドラを次のように記述する事ができるのだ。


procedure TfrmHM_Main.DeleteButton(Sender: TObject);
var
  Btn: TCommandButton;
  Bar: TCommandBar;
begin
  Btn := pumCmdBtn.PopupComponent as TCommandButton;
  Bar := Btn.Conteiner;
  Btn.Delete;

  (* ボタンが無くなればバンドも消去する *)
  if (Bar.Count=0) then
    ToolBars.Remove(Bar)
  else
    Bar.FitToButtonCount;
end;

ちなみに、TAction クラスにはこう言うプロパティは無いみたい……根性無しめ!! 仕方が無いので、左クリックの挙動は、各ボタン(TCommandButton)が所属するバンド(TCommandBar)か、もしくは更にそれらのバンドを管理しているTCommandBarsに処理させるほうが簡単だろう。

未だ実装はしてないが……実装すれば、HTMLエディタとしては最低限、機能するんだけどねぇ。ただ、この辺で少し、インタプリタめいたオブジェクトを作ろうかと画策しているので、完成には程遠いって感じ(笑)



変更点と言えば、オブジェクトインスペクタでフォントを変更したら、ファイル読み込み時の着色でも反映されるようにしてみた。できればプロパティと言う形で引数を渡したかったのだが、リッチエディットの場合、TConvertion クラスを定義するだけの事しかできず、生成は実質的にコンポーネント任せであるために引数を渡す事はできなさそうである。

そりゃ、LoadFromFile メソッドからして作れば別だけど……そんなん邪魔くさいやん(爆) と言うわけで、暫定的に const な文字列を使いレジストリを仲介してみた。

動作としては上手くいっているのであるが、キーが固定と言う事は、このコンポーネントを使う全アプリで設定が共通と言う事になるのが欠点……。もちろん駄目過ぎであるな。

しかし、コンポーネントのユニットで var 変数を使うのはどうでござろう? もしかして、同時に起動している別のアプリケーションでこのエディットを使っていた場合、変数の共有になりはすまいか? プロセスが違えば大丈夫なはずだが。うーむ。

この辺は色々と思考実験しているのだが、引数で渡せない限りは理想的にならないようだ。そうするためには、LoadFromFile だけじゃなく LoadFromStream なんかも作り変えなくちゃ行けない……やってられないわっ



関係ないけど、Delphi のコンポーネントパレットには256色アイコンが表示できるんだぜ、知ってた? いや、やってみたらできたんよ。ただ、その苦労ったら並じゃないぜっ!!

とりあえず Delphi 付属のイメージエディタでは、256色ビットマップ自体は作成できますが、パレットが設定できないってんでまず却下。

で、おもむろに初代 Delphi に添付の「Resource WorkShop」を起動してみるんですが、パレットの変更は出来るんですけど外部ファイルとかの読み込みなんかは全然、話になんない。うーむ、Windows3.1 のペイントブラシにも負けてるか……(笑)

他にリソースを作成できるってぇともう、リソースコンパイラ(Delphi の場合だと \bin ディレクトリRC.EXE がインストールされてます)しか手がないんだけど……。

誰か D-Pixed 用のアドイン作ってくんないかな(笑)

とにかく実験と言う事で、D-Pixed で書いた 24x24 の画像を WorkShop に貼り付けて、根性でパレットを設定(泣くかと思った)。これで表示できなかったら腹を切って死ぬしかないなと思ったんだが、我がやんごとなき IDE 殿はちゃんと256色で表示してくれました!



現状のスナップショット。次くらいは最低限のエディタとしてダウンロードできるようにする予定。

HotMilk 0.0.5.38
HotMilk 0.0.5.38


新着情報 トップメニュー ボートメニュー 掲示板 お手紙はここ!