Magicを始めてからずっと疑問だった点がようやく腹落ちしたので、覚書がてら投稿しておく。
※今年入った新人くんから「QiitaにMagicの記事少なすぎじゃないですか」と言われたので、本数を増やしてみようみたいな気持ちがなくもない。
やりたいこと
- オンライン画面に、ボタンを配置。
- ボタンを押したら、ズームイベントを発行。
これを実現するためには、以下のステップを踏む必要がある。
- フォームにボタンを配置
- ボタン用の変数を割当
- コントロール名を設定
- イベントに「ズーム」を設定
ずっと疑問に思っていたのが、どうして「2. ボタン用の変数を割当」の手順が必要なのか、ということ。
だってボタンに「ズーム」イベントは割り当ててあるし、コントロール名があるんだから特定もできるはず。
にもかかわらず、ボタンを押してもイベントは発行されないのである。うんともすんとも言わないのである。
そもそも「ズーム」って何よ
恐らくはMagicでできてるシステム、カジュアルに「ズーム」が使用されていることが多いと思うんだけど、
(n=2なので経験は少ないが、でもMOSやらGetting Startedやらでも出てくるから一般的なんだろう)
そもそも「ズーム」ってなんなのか。
HELPを見てみましょう…
違う、そうじゃない。
いや、そうなんかもしれないけど、もっと具体的にこうさあ、、、、
と喚いていたら、ベテランMagicianの先輩方から知見を得られた。
それらを経て解釈した「ズーム」イベントについての個人的見解は、
「パーク」しているコントロール上で、「ダブルクリック」や「F5」キー押下をしたときに起きるイベントの総称 である。
重要なのは、「パークしている」という部分。
私も今日まで知らなかったが、変数を割り当てていないボタンにはなんと、パークしないのである!!
…もしかしてみんな知ってた?
まとめ
最初の問いに戻る。
どうして「ズーム」イベントを割り当てたボタンには、「変数」も割り当てないといけないのか。
- 「ズーム」は「パーク」しているコントロールに対してクリック/F5等のアクションしたときにおこるイベント
- 「変数」の付いていないボタンにはカーソルがパークしない
- パークしないコントロール上では「ズーム」イベントが発行されない から
余談
「パーク」もMagician方言らしい。一般的には「フォーカス」っていうらしいですね。
え、私Magic村出身なんですけど、都会の人はパークって言わないんですか?