15) 私が悪かった・・・謎のコマンド Cursor ID
ある方から、ご質問頂きました。

・テキスト入力の際に、フィールド内にカーソルを移動させ、移動したと同時にキーボード画面を表示させるには

このことを、「フィールドにカーソルを移動させ」「ソフトキーボードのダイアログを表示する」という処理と解釈し、色々と調べてみました。

まず、興味があるのが、プログラム側から「ソフトキーボードのダイアログを表示する」部分ですね。
ま、これはAPIのお世話にならないだめでしょうね。と思って、PalmOSのリファレンスを「KeyBoard」で検索してみました。
すると、ありましたありました。
  • SysKeyboardDialog
  • SysKeyboardDialogV10
こいつらが、それを実現するようですが、SysKeyboardDialogの方は、引数が必要で面倒だったので、V10の方を使うことにしました。
V10の方は、引数も戻り値もないシステムコールですので、大抵の場合、NS Basicでは上手く動作する部類でしょうね。

早速、画面の上にコマンドボタンだけを置いて、

    SysTrapSub 179,0

としてみました。
さて、コンパイル・・・実行・・・

   入力エリアにカーソルを移動させてから、キーボードを起動してください。

ははは、無事に動作しているらしいですが、エラーが出て結果を確認とは。。。

気を取りなおして、もう一度。

       

はい、フィールドにカーソルがあれば、[KEYBOARD]と書かれたボタンのタップでソフトキーボードが起動しました。パチパチパチ。

次は「フィールドにフォーカスを移動」ですね。
で、ここで私が悪かったです。

    NS BasicにSetFocusなんてメソッドがあるわけないジャン

そう思いこんで、ハンドブックをめくってみました。
すると、ありました、

    Cursor Id 指定されるスクリーン・オブジェクトにカーソルを移動

これだな!、と思いまして、詳細を調べようとしたら・・・ない。
そう。ハンドブックに書式などの詳しい情報は載っていないのです。
じゃ、とりあえず、

    Cursor Id 1005

フィールドのID番号を指定してみましたが、これは、エラー。
次は、これでは?

    Cursor Id,1005

これも、エラー。
次、

    Cursor Id Fld1005

エラー。
とんでもない順番間違いをしているのかなぁ。
最後に試した、

    Cursor Id "Fld1005"

これで通りました。こういうときには、LOTO6を買ってはいけませんね。
で、結局、

   Cursor Id "Fld1005"
   SysTrapSub 179,0


この組み合わせで、動作を実現できました。
おかげで、Cursor Idというコマンドの詳細もわかったし、満足しましたが、ここで、念のため総本家さま掲示板を覗いてみる事にしました。

そうしたら、ありました「CURSOR IDコマンドがわからない」という投稿が。
同じように色々試されているようで、思わず納得してみましたが、そこに返信が1通ありました。

   そのコマンドを使うより、SetFocusメソッドを使ったほうが良い

ははは・・・ハンドブックを再確認でした。

私が、NS Basicを疑ったばかりに、Cursor Idという未知のコマンドの使い方と、その使い方が載っていない理由がわかりました。
私が悪かったです。

   Fld1005.SetFocus
   SysTrapSub 179,0


これでOKでした。