|
1.09のリリースがありましたが、ランタイムやIDEにバグが結構潜んでいるようなので、まずは、様子見です。 ということで、ちょっと一服、NS Basicでちょっとしたいたずらをしてみました。 皆さんは、Graffitiでどのくらい入力できるでしょうか? アルファベット程度はとりあえず、あまり入力しない記号類だと、お手上げでしょうか? 私が最初に買ったPalmPilotのProには、Graffiti Reference Cardという名刺2枚分くらいのカードが同梱されていて、ここに全部のGraffitiストロークが印刷されていますので、VISORに乗り換えた今でも、とても重宝しています。 とは言っても、今回のお話は、Graffitiではなく、Shift Indicatorにスポットを当てて見ました。 Shift Indicatorというコントロール(以下、SIC)は、IDEの画面でも、下の方にこっそりとある上向き矢印のコントロールです。 ![]() これは、文字入力を行うときに、日本語モードなのか、英語モードなのか、CapsLockなのか記号モードなのか等など、入力の状態を表すコントロールで、NS Basicのハンドブックには、 「入力用Graffitiエリアが大文字モードになっている時だけ現れます。それ以外は(略)現れません。」 ということです。 働きは、ご存知の通り「a」や「あ」「ア」「・」などの表示を自動的にするもので、ユーザー側は特にコントロールするためのコードを記述する必要がないようです。 (SICにはイベントが存在しませんから、無理と言えば無理ですが) SICをスクリーン上に配置すると、現在の入力状態がわかるので、文字を入力するアプリを作る時には置いときましょう、というモノです。 さて、このSIC、ハンドブックを眺めていて気が付いたのですが、TopやLeftという配置用のプロパティと同様、WidthやHeightという大きさを決めるプロパティを持っています。 しかし「あ」や「↑」の大きさは一定で、特別なサイズで表示されたものを見たことがありませんね。 ということで、これらのサイズを変えたらどうなるんだろう?と思いまして(純粋な好奇心)さらに、複数のSICを配置したらどうなるんだろう?とも思った訳です。 ハンドブックのどこを見ても「1つしかダメです!」とはありませんので(子供みたい・・・)複数大丈夫なんでしょう。それに、複数の場所で「あ」や「↑」がパカパカ切り替って表示されたら楽しいですよね。 ということで、これら2つの疑問を試すためのアプリを作ってみました。ソースの説明は全く不要、IDEのスクリーンショットで十分です。 ![]() 一応、テキスト入力用のFieldを1つと適当なサイズにしたSICを配置(というよりバラバラ)してみました。 笑えるくらい一瞬で終わったGenerateの後、早速本体へインストール。 ![]() なんじゃこりゃ、って感じですが、とりあえず、WidthとHeightは無視、ということですね。どこにもここにも「あ」と言う物は表示されていませんでした。 ん?「あ」って表示されてるけど、ハンドブックには・・・ 「入力用Graffitiエリアが大文字モードになっている時だけ現れます。それ以外は(略)現れません。」 これは、英語版のPalmOSに限ることですね。日本語版では「あ」が表示されますので、ハンドブックの記載不足ですね。 「入力用Graffitiエリアの状態に応じた記号が表示されます。」 とする方が良いでしょう。(本家さま、フォローお願いします。あまり、意味のあることではありませんが・・・) つぎは、いっせいに表示が変わるという期待を持って「日/英」でもタップしてみましょう。 ![]() あれれ?1つしか変わりませんね。それも、中途半端な場所ですね。 (調査開始〜〜〜〜〜〜調査中〜〜〜〜〜調査完了) ということで、色々試してみましたが、一番最後に配置したSICのみ反応していることがわかりました。 最初のIDEの画面では、SICは次の名前になっており、反応したSICが一番最後の「1011」でした。 ![]() 要するに、SICは1つ、それも配置した一番最後のものが動作対象になるようです。 これらのことからわかるように、SICは、必要なところに1つ置いておけば十分、ということがわかりました。 (最初っから、ムダなことするヤツぁ、いね〜って!) さて、実行してみて疑問に思ったのですが、なぜ全部が「あ」だったのでしょうか? どの状態でも良かったわけですから、いったいSICの初期値は、何で決まるのでしょうか? 実は、この疑問については、何度も試している、うっすらと解決していました。結論は、このアプリケーションの起動時の状態を取ってくる、というものです。 試しに、先ほどのアプリで、一度別の状態にして、メニューに戻ってから、再度起動してみましょう。 まず、CapsLockにしてみます。 ![]() 次に、一度、メニューに戻ってみます。(POSE上ですから、驚くほど何もない画面ですが・・・) ![]() で、再度起動してみます。(言い忘れましたが、このアプリProject1です。) ![]() どうでしょう? 見事に全部、CapsLockです。 同様に一度メニューに戻ってから、メモ帳上でSICの状態を変更してから再度起動しても、同じ状態でした。 ということで、起動時にシステム上のSICの状態を参照して、初期値として表示しているのだと思います。 どうして、初期値が前のアプリの状態を保持しているのか?と言うことですが、NS BasicでもSICの状態は参照も変更もできません。同様に、大抵のアプリ側から操作できないため、そのまま保持されているのではないでしょうか?(変える必要がない、かもしれませんが・・・) 随分、長いことShift Indicatorで遊んでみましたが、いかがでしょうか? 複数を配置すると「無用の長物」ですが、実は、この読み物自体が無用のような気がしますね。最後まで読んでくれた方、ありがとうです。 |