はじめてのMDI

1562 letters | 1632 views | コメントする

 あたしのDelphi歴は相当長い方だと思うが、これまでまともにMDIアプリを作ったことがなかった。だから、現在の仕様が最初からなのかいつからなのか分からないが、あたしはこれじゃマズいと思う。よっぽどDelphiでMDIアプリを作る人がいなくて、こういう仕様でも文句が出ないんだろうな。Delphi使ってる人自体が少なく、その中でもMDI使う人が少ない。

 まぁ、簡単な例では、Form1のOnCreateやOnShowあたりでForm2を動的生成することが出来ない。MDIのサンプルアプリとかいいかげんな動作確認では、初期ウィンドウは静的生成だから問題が起らず、動的生成はメインメニューから行うからやはり問題が起らないんだろう。しかし、サンプルじゃないまともなMDIアプリでは、例えばコマンドラインにドキュメントを渡して起動するとか言う事がありうる。関連付けで開くと言う事もありうる。しかも、MDIだからドキュメントも一つではなく、起動時にいくつMDI子ウィンドウを開くか決まっていない。そうなると、普通はOnCreateとかOnShowとかのあたりで、ドキュメントを開くための動的生成が必要になる。ところが、DelphiのMDI管理では、子ウィンドウを生成するためにはまず親ウィンドウの生成が終わってなきゃいけない。うん、そりゃ当り前のことなんだけど、OnCreateやOnShowではまだ親ウィンドウの生成が終わってないことになってるから、まだ子ウィンドウを作る事は出来ない。じゃあ、親ウィンドウの生成が終わってから読み込みすれば良いってことで、一応、CreateFormとRunの間に一連の処理をやればいいかと思う。たぶんググっても出てこない。真魚ではWM_PAINTを捕まえてやろうとしてるが、いろいろ不審な動作が発生して困ってる所。

 わかりにくいとは言え、やり方があるんなら別に構わないんだけど、Delphiって初心者でもOnCreateをダブルクリックしたりしてテキトーにアプリを作れるよって言うのがウリみたいなものだから、そういう方法ではまともにウィンドウも生成できない状態って、Delphiを作った人の思惑には反してると思うんだよ。やっぱりMDIがもう使う人が少なすぎて、これで良いのか?って疑問が出てこないんだろうな。

USB MIDIケーブル

 つーわけで真魚は、ただのタブ切り替えエディタからタブ付MDIエディタに大改造中だけど、まだまだうまく行かない事が多すぎる。タブを切り替えてるのにキー入力が切り替わってなくて別のタブに書き込んでみたり、ただタブを切り替えたいだけなのにいちいち親ウィンドウ内で最大化したり戻ったりのアニメーションを止められなかったり、全然ダメな感じ。gPad見たいに綺麗にやりたいんだけど、テキストエディタに限らず、タブ付MDIを綺麗にやってるのは非Delphiばかりだから、Delphiじゃうまく行かないかも知れない。

たぶん関連のある記事:

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