またDelphiの壁

1649 letters | 940 views | コメントする

素人とプロの壁はどうしようもなく超えられないが、
Delphiの壁は素人でも超えられるという話。
ユニコード対応含むDelphiの壁はいくつも超えてきた。

真魚のBOX選択を改造した。
メモ帳にはない機能だから、メモ帳しか使った事がない人に見せびらかさないという発想から。
なんのこっちゃわからない物が、あまりメニューに並んでると美しくないからな。
BOX選択を知ってる人は、メニューになくてもAlt押しながら選択してみるし。

まず、萌ディタの開発日記にあるクリップボードフォーマットを参考にする。
BOX選択でクリップボードに送るときは、TEditorとVSに互換の形式にしてみた。
本当はDelphiのIDEとも互換にしたかったが、うまく動かなかったので無視。
EmEditorとも互換にしたいが、EmEditorと真魚を同時に使う場面が想定できないから無視。
ともかく、BOXのデータにはBOXマークを付けてクリップボードに入れる。
で、貼り付けの時、そのマークの有無で動作を変えれば「BOX貼り付け」は要らなくなる。

次にBOX選択ON/OFFを、Altキーでやるように変更する。
しかし、マウスでの選択時も、Alt+Shift+カーソルキーでの選択時も、Altを取得できない。
Altキー自体を、TNotePadが受け取れないことがわかった。
それどころか、Alt押してるとカーソルキーすら受け取れなくなる。
途方に暮れたので、ソース公開してるJmEditor、K2Editorからパクろうと思ったのだが、
JmもK2も、Alt+クリックは動作するのに、Alt+Shift+カーソルは動作していない。
萌ディタも同じ動作。
これがDelphiの壁だ。
どうやらDelphiでは、Alt押しながらのキー操作はショートカットキー扱いみたいになっていて、
Alt押しながらカーソル押しても、そのカーソル入力すら無効になるようなのだ。
そっか、Delphi製アプリはキーボードだけではBOX選択できないから、
Jmは「矩形選択」、K2は「箱形選択」をメニューから除去することが出来ないのか。
「なーんだ、できないのか」って、あきらめなかったわけだが。
Delphiで作られているDelphi IDEでは、Alt押しながらカーソル動くわけで、
やり方はあるだろうということでAltキーを追跡し、
TNotePadは受け付けなくても親ウィンドウが受け取っているのでそれを利用。

これでメニューからBOX関連の項目を消すことが出来た。
しかし、また一つ素人がTNotePadを使ってエディタ作れないハードルが出来てしまった。
Alt受け取る部分は公開されるソースに含まれないからね。

編集メニュー、右クリックメニューはもっとスッキリさせたい。

4106101491
4106101491

たぶん関連のある記事:

コメントは終了しています。