|
NS Basic/Palm チュートリアル #2:
複数のフォームを持つプログラム
© NSB Corporation. All rights reserved.
|
目的
このチュートリアルの目的は、チュートリアル #1 からさらに突っ込んだNS Basic/Palmプログラミングのテクニックを習うことです。この練習を始める前にチュートリアル #1 を終わらせると良いでしょう。この練習では複数のフォームを扱うテクニックを習います。
プログラムの説明
ここで作るプログラムは2つのフォームを持っています。Form#1はユーザが誕生日と名前の入力を行う為のものです。Form#2は、Form#1で入力した誕生日と名前を表示し、さらに実際の出産日が何曜日であったかを表示します。
プログラムの開発
1. 起動
- 「スタート」からNS Basic/Palmを起動する。
- 最初の画面で新規プロジェクトを開いて下さい。
2. プロジェクト・プロパティの変更
-
(Name)を"MyProject"に変える。
- Creator ID を "MyPr" に変える。
3. 最初のフォームのプロパティを変更
- タイトルが"Form1"を持つ、空白スクリーンが開いているはずです。
- プロジェクトエクスプローラの中のフォームをクリックして選ぶ。
- (Name)を"My Form 1"へと変更する。
- Titleを"データ入力フォーム"にする。(フォーム上部のタイトルになる)
- Default
Form を "True"に設定する。
4. フォーム1のオブジェクトを構築
誕生日入力用にDate Selectorを追加する。
- ツールボックスボックスないのセレクターオブジェクトをクリックする。
- フォーム上の配置したい場所にカーソルを移動し、クリックしてオブジェクト配置する。
- 配置したオブジェクトをクリックして選択する。
- プロパティウィンドウ内のLabelに"99/01/01"を入力する。
- (Name)
に "selDate"と入力する。
名前入力用にフィールドを追加する。
- ツールボックス内のフィールドオブジェクト("T")をクリックする。
- フォーム上の配置したい場所にカーソルを移動し、クリックしてオブジェクト配置する。
- 配置したオブジェクトをクリックして選択する。
- プロパティウィンドウ内の(Name)に"fldName"を入力する。
フォーム2に移動する為のボタンを追加する。
- ツールボックス内のボタンオブジェクト("OK")をクリックする。
- オブジェクト配置し、選択する。
- プロパティウィンドウ内のLabelに"曜日を表示"を入力する。
5. 2つ目のフォームを作成
- 「プロジェクト」メニューから「フォームを追加」を選ぶ。
- プロジェクトウィンドウ内の(Name)を"My Form 2"にする。
- Titleを"曜日表示"にする。
6. フォーム2のオブジェクトを構築
誕生日の表示ラベルを追加する。
- ツールボックス内のラベルオブジェクト("T:")をクリックする。
- フォーム上に配置し、選択する。
- プロパティウィンドウ内のLabelに"誕生日:"を入力する。
誕生日を表示するフィールドを追加する。
- ツールボックス内のフィールドオブジェクト("T")をクリックする。
- フォーム上に配置し、選択する
- プロパティウィンドウ内の(Name)に"fldDate2"を入力する。
名前の表示ラベルを追加する。
- ツールボックス内のラベルオブジェクトをクリックする。
- フォーム上に配置し、選択する。
- プロパティウィンドウ内のLabelに"名前:"を入力する。
名前を表示するフィールドを追加する。
- ツールボックス内のフィールドオブジェクトをクリックする。
- フォーム上に配置し、選択する
- プロパティウィンドウ内の(Name)に"fldName2"を入力する。
曜日の表示ラベルを追加する。
- ツールボックス内のラベルオブジェクトをクリックする。
- フォーム上に配置し、選択する。
- プロパティウィンドウ内のLabelに"曜日:"を入力する。
曜日を表示するフィールドを追加する。
- ツールボックス内のフィールドオブジェクトをクリックする。
- フォーム上に配置し、選択する
- プロパティウィンドウ内の(Name)に"fldDayNumber"を入力する。
フォーム1に戻る為のボタンを追加する。
- ツールボックス内のボタンオブジェクトをクリックする。
- フォーム上に配置し、選択する
- プロパティウィンドウ内のLabelに"戻る"を入力する。
7. プログラムのStartupコードを入力
- 「プロジェクト」メニューから、 "Startup Code"を選ぶ。
- Project_Startup()ラインの後に、以下のコードを入力する。
Global MyName as String
Global MyDate as date
MyDate=ToDate("1999/01/01")
このコードの目的は、
- MyNameとMyDateをグローバル変数にすることにより、これらの値はプログラム内のどこのセクションからでもアクセスが可能になる。
- MyDateに日付値を与える。MyDateはDateポップアップコマンドで使用されるので、有効な日付値が必要になる。ユーザが自分の誕生日を入力することにより、この日付けは上書きされる。
特にこれ以上のアクションは必要なく、プログラムの起動時に、NS Basic/Palmは自動的に最初のフォームを表示する。
Project Explorerは、プロジェクト名の横に"(Startup)"を表示して、Startupコードが与えられたことを示す。
8. フォーム1のオブジェクト用にコードを入力
- フォーム1を表示させる為に、プロジェクトエクスプローラの中でフォーム1(My Form 1)をクリックする。
- 右クリックして「オブジェクトを表示」を選ぶ。
日付け入力用ポップアップを引き起こす為のコード:
ユーザがフォーム1上の誕生日(birthday)Selectorをタップした時、Palmデバイスの標準Date Selectorポップアップが開くようにするため、フォーム1上のSelectorオブジェクトにコードを与えてこれをさせる。
このコードは以下のことを行う。
- "result"変数を定義する。2行目にあるPopupDateファンクションは、ユーザが日付けを変更したかを示す結果を戻す。(変更した場合:result=1、変更していない場合:result=0)この変数(result)は整数タイプintegerにする必要がある。このプログラムではこの結果は使用しないが、result変数はPopupDateファンクションが必要な為に存在する。
- PopupDateファンクションを呼んで、ユーザが入力した誕生日を受け取る。これによってMyDateの日付けが更新される。
- この新しい日付け値を誕生日のSelectorフィールドに入れる。入力が行われなかった場合、古い日付けが残る。strファンクションはMyDateの内部日付け形式を、文字列"yy/mm/dd"の形に変える。
9. フォーム2へ移動する為のコード
ユーザが「曜日を表示」ボタンをタップした時、フォーム2が現れるようにする。
- ボタンをダブルクリックして、コードウィンドウを出す。
- SUBの次のラインから以下のコードをタイプする。
MyName= fldName.text
NextForm "My Form 2"
このコードは以下のことを行う。
- フォーム1が消える時、そのフォーム上にあるユーザが入力した情報は、グローバル変数に保存しない限り完全になくなるので、この時点でユーザが入力した名前を保存する。FldName.textは、フィールドに入力された名前を取り出し、グローバル変数であるMyNameにその値が保存される。これによってフォーム2でもこの値を使うことができる。
- NextFormコマンドは制御をフォーム2に移す。
10. フォーム2のオブジェクト用にコードを入力
- フォーム2を表示させる為に、プロジェクトエクスプローラの中でフォーム2(My Form 2)をクリックする。
- 右クリックして「オブジェクトを表示」を選ぶ。
フォームが描画された後に実行されるコード(form after code)
- プロジェクトエクスプローラの中でフォーム2を右クリックして「After Codeを表示」を選ぶ。
- SUBの次のラインから以下のコードをタイプする。
fldName2.text=MyName
fldDate2.text=dateMMDDYY(MyDate)
fldDayNumber.text=str(DayOfWeek(MyDate))
このコードは、Palmデバイスがフォームを表示する前に、全てのフィールドに値を入れる。
- 名前のフィールドにグローバル変数MyNameからの値をセットする。これはフォーム1でユーザが入力した値。
- 誕生日のフィールドにグローバル変数MyDateの値をセットする。これはフォーム1でユーザがdateポップアップを使って入力した値。
- 曜日のフィールドに値(1から7)をセットする。入力された日付けMyDateをDayOfWeekファンクションに渡して結果を得る。このファンクションは結果として数値を戻すので、strファンクションを用いてテキスト文字列に変換する。
11. フォーム1に戻るための"Go Back"ボタンのコード
- ボタンをダブルクリックして、コードウィンドウを出す。
- SUBの次のラインから以下のコードをタイプする。
NextForm "My Form 1"
このボタンがタップされると、フォーム1が再度現れ、ユーザは別の日付けを試すことができる。
プロジェクトはc:\NSBasic\ MyProject.prjとして保存する。
全てのフォーム定義、フォームオブジェクト、コード、および他のプロジェクト情報は1つのプロジェクトファイルに保存される。
12. ダウンロード可能なPalm Device Fileを作る
もしエラーが存在する時、エラーメッセージとコードウインドウが現れ、エラーの箇所がハイライトされる。エラーは全て取り除く必要があり、エラーがなくなるまで、「コンパイル」と修正を繰り返す。 エラーがないとメッセージが現れてアプリケーションのサイズが表示される。
エラーを直した場合は、再度プロジェクトを保存する。
コンパイルが成功すると、以下に示すディレクトリとファイル名を持つ、ダウンロード可能なファイルが作成される。
c:\NSBasic\Download\myProject.prc
設定によってPOSEにダウンロードされるか、デバイスへのHotSyncが準備される。
これでNS Basic/Palmプログラムの完成です!
プロジェクトのテスト
POSEシミュレータを使ってテスト
POSEシミュレータの環境を予め整えなくてはなりません。ReadMeファイルを参照して下さい。
- 「ツール」メニューから「オプション」を開き、「コンパイル/ダウンロード」タブを押す。「コンパイル後...」セクションの「POSEへ送る」および「直ぐに実行」を選択する。「OK」を押し、オプション画面を閉じる。
- POSEが開いていない場合、「実行」メニューから「Palm OSエミュレータを起動」を選ぶ。
- 始めてPOSEを起動した場合は、「実行」メニューから「Runtimeをダウンロード」を選んで、NSBRuntimeをダウンロードする。
- 「実行」メニューから「コンパイル」を選ぶ。
Palmデバイスを使ってテスト
- 「ツール」メニューから「オプション」を開き、「コンパイル/ダウンロード」タブを押す。「コンパイル後...」セクションの「デバイスへHotsync」を選択する。「OK」を押し、オプション画面を閉じる。
- まだRuntimeをダウンロードしていない場合、「実行」メニューから「NSBasic RuntimeをHotSync」を選ぶ。
- 「実行」メニューから「コンパイル」を選ぶと、メッセージが現れる。
- 通常行うようにPalmデバイスへのHotsyncを行う。
- Hotsyncが完了したら、プログラムが実行される。直ぐに実行されない場合、デバイス上の「ホーム」ボタンをタップする。
- HelloPgmを選ぶと、プログラムの実行が始まる。