NS Basic/CE Tutorial #2:

A Program with multiple Forms


© NSB Corporation. All rights reserved.


目的

このチュートリアルでは、Tutorial #1に引続き、基本的なNS Basic/CEのプログラミングテクニックをお見せします。まだTutorial #1を終えていないようでしたら、このチュートリアルを始める前に、Tutorial #1を終わらせて下さい。ここでは、複数のフォームを使ったテクニックを紹介します。

作成するプログラムの概要

ここで作るプログラムは2つのフォームを持っています。フォーム#1は、ユーザが誕生日と名前を入力するフォームです。フォーム#2では、この入力された値と誕生日が何曜日かを表示します。

プログラムの開発

1. 起動

  • Windowsの「スタート」から「NS Basic CE Desktop IDE」を起動する。
  • Openダイアログが開いたら、New Projectを開く。
  • タイトルが"Form1"の空のフォームが現れます。

2. 最初のフォームのプロパティを変更

  • Project Explorerにある"Form1"をクリックする。
  • Propertiesウィンドウで、Nameプロパティを"MyForm1"へ変更する。

3. フォーム1のオブジェクトを構築

Dateオブジェクトを追加

  • Toolbox上のDateオブジェクトをクリックする。
  • フォーム上にマウスポインターを移動し、クリックしてオブジェクトを配置する。
  • 配置したオブジェクトをクリックして選択する。
  • Propertiesウィンドウで、Nameプロパティを"birthdate"へ変更する。

名前を入力するフィールド追加

  • Toolbox上のTextBoxオブジェクトをクリックする。
  • フォーム上にマウスポインターを移動し、クリックしてオブジェクトを配置する。
  • 配置したオブジェクトをクリックして選択する。
  • Propertiesウィンドウで、Nameプロパティを"textName"へ変更する。
  • Propertiesウィンドウで、Textプロパティを"Enter Your Name"へ変更する。

フォーム2へ移動するためのボタンを追加

  • Toolbox上のCommandButtonオブジェクトをクリックする。
  • フォーム上にマウスポインターを移動し、クリックしてオブジェクトを配置する。
  • 配置したオブジェクトをクリックして選択する。
  • Propertiesウィンドウで、Captionプロパティを"Show the Day of the Week"へ変更する。

4. 2番目のフォームを作成

  • IDEのメインメニューから「Project」をクリックし、「Add Form」を選ぶ。
  • Propertiesウィンドウで、Nameプロパティを"MyForm2"へ変更する。

5. フォーム2のオブジェクトを構築

Birthdayテキストラベルを追加

  • Toolbox上のLabelオブジェクトをクリックする。
  • フォーム上にマウスポインターを移動し、クリックしてオブジェクトを配置する。
  • 配置したオブジェクトをクリックして選択する。
  • Propertiesウィンドウで、Captionプロパティを"Birthday ="へ変更する。

Birthdayフィールドを追加

  • Toolbox上のTextBoxオブジェクトをクリックする。
  • フォーム上にマウスポインターを移動し、クリックしてオブジェクトを配置する。
  • 配置したオブジェクトをクリックして選択する。
  • Propertiesウィンドウで、Nameプロパティを"textDate2"へ変更する。

Nameテキストラベルを追加

  • Toolbox上のLabelオブジェクトをクリックする。
  • フォーム上にマウスポインターを移動し、クリックしてオブジェクトを配置する。
  • 配置したオブジェクトをクリックして選択する。
  • Propertiesウィンドウで、Captionプロパティを"Name ="へ変更する。

Nameフィールドを追加

  • Toolbox上のTextBoxオブジェクトをクリックする。
  • フォーム上にマウスポインターを移動し、クリックしてオブジェクトを配置する。
  • 配置したオブジェクトをクリックして選択する。
  • Propertiesウィンドウで、Nameプロパティを"textName2"へ変更する。

Day-of-the-weekテキストラベルを追加

  • Toolbox上のLabelオブジェクトをクリックする。
  • フォーム上にマウスポインターを移動し、クリックしてオブジェクトを配置する。
  • 配置したオブジェクトをクリックして選択する。
  • Propertiesウィンドウで、Captionプロパティを"Day-of-the-week ="へ変更する。

Day-of-the-weekフィールドを追加

  • Toolbox上のTextBoxオブジェクトをクリックする。
  • フォーム上にマウスポインターを移動し、クリックしてオブジェクトを配置する。
  • 配置したオブジェクトをクリックして選択する。
  • Propertiesウィンドウで、Nameプロパティを"textDayName"へ変更する。

フォーム1へ移動するためのボタンを追加

  • Toolbox上のCommandButtonオブジェクトをクリックする。
  • フォーム上にマウスポインターを移動し、クリックしてオブジェクトを配置する。
  • 配置したオブジェクトをクリックして選択する。
  • Propertiesウィンドウで、Captionプロパティを"Go Back"へ変更する。

6. プログラムの起動時に実行されるコードを追加

  • Project Explorerからプロジェクトのアイコンを右クリックし、「View Code」を選択する。
  • コードウィンドウが開いたら、次のコードを入力する。
    	DIM MyName
    	DIM MyDate

    このコードの目的はグローバル変数(MyNameとMyDate)を追加し、プログラムのどこからでもこれらの変数をアクセスできるようにします。

    これ以上のアクションは必要ありません。プログラムがスタートすると、NS Basic/CEは自動的に最初のフォームを表示します。

  • コードウィンドウを閉じ、フォームの画面に戻る。

7. フォーム2へ制御を移すコードを追加

ユーザが「Show the Day of the Week」ボタンをタップした時、2番目のフォームを表示するようにします。

  • スクリーン上のボタンをダブルクリックしてコードウィンドウを開く。
  • SUBステートメントの次のラインから以下のコードをタイプする。
	MyName = textName.text
	MyDate = dateBirth.text
	MyForm1_Hide
	MyForm2_Show

このコードは、以下のことを行います。

    • フォーム1が消えると、ユーザから入力されたフォーム上のデータは、どこかに保管しておかない限り失われます。ユーザから入力されるデータはこの時点でどこにも保管されていませんので、フォームが消える前に保管します。textName.textはフォーム上のフィールドから名前の値を抜き出し、変数"MyName"へ保管します。このグローバル変数に保管することにより、後でフォーム2でもデータへのアクセスが行えます。同様に、Dateオブジェクトからの値を変数"MyDate"へ保管します。
    • MyForm1_HideとMyForm2_Showメソッドは制御をフォーム2へ移します。
  • コードウィンドウを閉じる。

8. フォーム2オブジェクトのコードを追加

  • フォーム上のオブジェクトがない部分をダブルクリックし、コードウィンドウを開く。
  • SUBステートメントの次のラインから以下のコードをタイプする。
	textName2.text = MyName
	textDate2.text = MyDate
	textDayName.text = WeekDayName(WeekDay(MyDate))

このコードは、CEデバイスがフォームを表示する前にフィールドをデータで埋めます。

    • 最初のラインは、グローバル変数"MyName"の値を、ユーザの名前を入れるフィールド"textName2"へセットします。これはフォーム1でユーザが入力した値です。
    • 次のラインは、グローバル変数"MyDate"の値を、ユーザの誕生日を入れるフィールド"textDate2"へセットします。これはフォーム1でユーザがDateセレクターから選んだ値です。
    • 最後のラインは、 "Day-of-the-week"フィールドをセットします。WeekDay()関数はMyDateを受け取り、曜日を示す1〜7の数値を返します。この値をWeekDayName()関数へ渡し、文字列表記の曜日を受け取ります。この文字列を"textDayNam"フィールドにセットします。
  • コードウィンドウを閉じる。

9. 「Go Back」ボタンにフォーム1へ戻るためのコードを追加

  • スクリーン上のボタンをダブルクリックし、コードウィンドウを開く。
  • SUBステートメントの次のラインから以下のコードをタイプする。
	MyForm2_Hide
	MyForm1_Show
  • コードウィンドウを閉じる。

    このボタンがタップされると、フォーム1が表示され、ユーザは別の誕生日を入力できるようになります。

10. スタート

  • プロジェクトを保存する。

    適当な場所に"MyProject.nsb"としてプロジェクトを保存して下さい。すべてのフォーム定義、オブジェクト、コード、およびプロジェクトの情報は、1つのプロジェクトファイルに保存される。

  • IDEのメインメニューの「Run」から「Start」を選ぶ。

    エラーがある場合、エラーメッセージが現れ、このダイアログボックスからデバッグ用のデバッガーが選択できます。エラーすべて取り除き、エラーがなくなるまで「Start」を繰り返して下さい。エラーを修正した時は、プロジェクトを再度保存して下さい。

    実機を使ってプログラムを実行して下さい。

    おめでとうございます。これでこのプログラムは完成です。

プロジェクトのテスト

EmCEはDateオブジェクトをサポートしていませんので、CEデバイスを使ってテストして下さい。

  • 「Tools」メニューから「Options」を選び、ダイアログ中の「Start」タブをクリックする。
  • 「Start Program」セクションの「ActiveSync to Device」を選び、「Run Automatically」をチェックする。
  • 「Device Install Path」フィールドに、Pocket PCの場合は"\My Documents"を、他のデバイスの場合は"\"をタイプする。
  • 「OK」をクリックする。
  • 「Run」メインメニューから「Start」を選んで、プログラムを実行する。

  • ActiveSyncが終わると、プログラムが実行されます。