第10回 全員集合!スクリーンオブジェクト 「3.目的別オブジェクト紹介 その2.入力する」

10−3 目的別オブジェクト紹介 その2.入力する

プログラム側へ何かを入力するオブジェクトには、2種類あります。
文字入力をする「Field」オブジェクトと、補助的に入力をする「Selector」オブジェクトですが、入力時に合わせて使うと親切な「Shift Indicator」オブジェクトもここで紹介しておきます。

Fieldオブジェクトは、いわゆる「テキストボックス」です。
プロパティなどは以下の通りです。

Fieldオブジェクト
 
設計時実行時簡単な説明
プロパティ .Auto Shift×Trueにすると、単語の最初の文字が大文字になります。
.Dynamic Size×Trueにすると、自動的にサイズが変更されます。
.Editable×Trueにすると、表示のみ、編集できなくなります。
.Font ID×(→Labelオブジェクト参照)
.Has Scrollbar×Trueにすると、スクロールバーが付加されますが、.Single LineプロパティがTrueの場合はTrueの指定は出来ません。
.Hight× 
.Left× 
.Left Justified×Trueにすると文字が左寄せに、Falseにすると右寄せになります。
.Max Characters入力できる最大の文字数を指定します。
.Numeric×Trueにすると、数字しか入力できなくなります。
.Single Line×Trueにすると、改行などの特殊コードが入力できなくなるので、結果的には、1行しか入力できなくなります。
.Left× 
.Underline×Trueにすると、アンダーラインが表示されます。
.Visible× 
.Width× 
メソッド .Hide非表示にします
.Redraw再描画します
.SetFocusフォーカス(カーソル)を移動します
.Show表示します
.Text表示されている値を参照するか、セットします
イベントフォーカス消失時

結構数が多いですが、それほど難しいプロパティはありません。
特徴的なプロパティの1つに.Auto Shiftプロパティがあります。
これは、文の最初の文字を自動的に大文字にするプロパティで、英文を入力する時にとても楽になります。(英語圏の文化だなぁと、こんなところで文化を感じたり出来ます)
このプロパティ、Visual BASICで言えば、IMEの状態を制御する.IMEModeプロパティなどが、これに近い存在かもしれませんが、残念ながら、NS Basicでは入力モードをプログラム側から変えることが出来ません。
ちなみに、.Auto Shiftプロパティと同じ働きをするコマンドとして、Proper()関数が用意されています。

もう一つ、特徴的といえば、.Numericプロパティでしょうか。
このプロパティ値がTrueになれば、Field中には数字しか入力できなくなります。なんだ、それだけかと思うかも知れませんが、いちいちチェックルーチンを用意しなくても数字だけを入力させることができるので、結構便利です。コマンドレベルでもTestNum()関数が用意されていることを考えると、比較的、入力を容易にする仕組みが多く用意されてるようです。

試していて、面白かったのが、.Max Charactersプロパティで、要するに、Fieldオブジェクトに入力できる文字数を制御するものですが、これはプログラム中から操作できました。
しかし、プログラム中で設計時に設定した値より小さな値を代入すると、「それ以降」入力できる文字数に制限がかかります。既に入力されてしまった文字が削られたり、エラーが出ることはありませんし、入力された文字数がプロパティより大きくても.Textメソッドで、全部取得することが出来ます。

イベントについては、他のオブジェクトが持っているイベントの大半が「タップ」イベントであるのに対して、Fieldオブジェクトは「カーソルが他に移った時」に発生します。
つまり、カーソルがそのFieldから無くなった時に発生しますが、これは入力内容のチェックと確認を行う目的で使用するのが適当でしょう。
1つのFieldオブジェクトと1つの「登録」ボタンだけのプログラムであれば、それほど気にする必要は無いでしょうが、複数のFieldを持ったプログラムでは真価を発揮します。
NS Basicでは、そのオブジェクトがIDEのフォーム上から削除されると、そこに記述されているイベントモジュールも削除されますので、例えば、後から「登録」ボタンで全てのFiledの内容をチェックするより、メンテナンスが容易と考えられます。ちなみに、IDEのプロジェクトナビゲータ上では「Click」と表示されるのはご愛嬌ですね。

一方、この直接文字入力を行うFiledオブジェクトと一緒に使うと効果的なオブジェクトが「Shift Indicator」です。

Shift Indicatorオブジェクト
 
設計時実行時
プロパティ .Left×
.Top×

このあまりにもシンプルなオブジェクトは、文字入力時に見かける「a」や「あ」や「↑」と表示されている部分です。
特に何もしなくても、置いておくだけで入力モードが自動的に表示されますので便利です、というより、これがないとわからないので、置くように心がけましょう。
また、Ver.1.xでは大きさを変更できたのですが、Ver.2.xになって、本当に貼りつけるだけになりましたが、従来通り、複数のShift Indicatorを置くことは出来ます。
(複数置いた場合、どうなるか?これに興味がある方は、別コーナーNS Basicについて「08) 無用の長物?」をご覧下さい。)


Shift IndicatorFieldは、ペアで使いましょう

もう1つ、入力用のオブジェクトとして「Selector」があります。
これは、次のようなプロパティなどを持っています。

Selectorオブジェクト設計時実行時
プロパティ .Anchor Left×
.Font ID×
.Height×
.LabelR/W
.Left×
.Top×
.Visible×
.Width×
メソッド .Hide非表示にします
.Redraw再描画します
.Show表示します
.Text表示されている値を参照するか、セットします
イベントタップ消失時

Selectorオブジェクトには、Fieldのように直接文字などを入力することが出来ません。
これは、日付や時刻などを入力するために「用意された」ダイアログと一緒に使います。
例えば、Selectorオブジェクトと、日付入力用のPopuoDate()関数と一緒に使います。
  Sub object1004()
    Dim theDate as Date
    Dim res as Integer

    theDate=Today()
    res=PopupDate(theDate,"Please,Enter")
    Selector1004.Text=DateMMDDYY(theDate)

  End Sub
これで、Selectorに選択した日付が表示されるようになります。

    

表示されるサイズは、一応、.Height.Widthプロパティがサポートされているものの、実際は表示している文字列にあわせて大きさが変化しますので、特に、意識する必要はありません。

入力用のオブジェクトFiledSelectorを使ってほとんど全ての情報が直接入力できることになります。
簡単な観察日記プログラムなどを作るのであれば、これらを組み合わせることで、日付と時間と観察結果を比較的簡単に入力できますね。

前へ    目次へ     次へ

第10回 全員集合!スクリーンオブジェクト 「3.目的別オブジェクト紹介 その2.入力する」