入門の手引き 第 4 章 前の章 次の章

VB C# ALL プログラミング言語によるフィルタ (ここで選んだ言語で選別された説明や図だけが表示されます)

4. 新規アプリ開発支援 (1)

この章には、新たな画面アプリを開発する次の手順が書いてあります。 この手順にそって、簡単な画面アプリを一つ開発してみましょう。

4.1 プロジェクトの新規作成

4.2 フォームのデザイン

4.3 コード合成の実施

4.4 アプリケーションの動作テスト

4.5 フォームの整形


4.1 プロジェクトの新規作成

ここには、プロジェクトの作成方法が説明してあります。新たな画面アプリを開発するには、まずプロジェクトを作成することが必要です。

◇ 新規画面アプリの枠組みの作成

ここでは、練習のために Rensyuu1 という画面アプリを開発してみます。

なお、この開発作業の途中で分からなくなったら、サンプル画面アプリ Rensyuu2 をご参照ください。Rensyuu2 は、これから作ろうとするものの完成形です。 これから開発しようとする Rensyuu1 と異なる点は、ソリューション名およびプロジェクト名が Rensyuu1 ではなく Rensyuu2 となっている点だけで、他は全く同じです。Rensyuu2.vbproj を参照するには、「1. サンプル画面アプリを動作させる方法」 に説明のある操作方法で、以下を開いてください。

なお、この開発作業の途中で分からなくなったら、サンプル画面アプリ Rensyuu2 をご参照ください。Rensyuu2 は、これから作ろうとするものの完成形です。 これから開発しようとする Rensyuu1 と異なる点は、ソリューション名およびプロジェクト名が Rensyuu1 ではなく Rensyuu2 となっている点だけで、他は全く同じです。Rensyuu2.csproj を参照するには、「1. サンプル画面アプリを動作させる方法」 に説明のある操作方法で、以下を開いてください。

なお、この開発作業の途中で分からなくなったら、サンプル画面アプリ Rensyuu2 をご参照ください。Rensyuu2 は、これから作ろうとするものの完成形です。 これから開発しようとする Rensyuu1 と異なる点は、ソリューション名およびプロジェクト名が Rensyuu1 ではなく Rensyuu2 となっている点だけで、他は全く同じです。Rensyuu2.vbproj (VB の場合) Rensyuu2.csproj (C# の場合) を参照するには、「1. サンプル画面アプリを動作させる方法」 に説明のある操作方法で、以下を開いてください。

なお、この開発作業の途中で分からなくなったら、サンプル画面アプリ Rensyuu2 をご参照ください。Rensyuu2 は、これから作ろうとするものの完成形です。 これから開発しようとする Rensyuu1 と異なる点は、プロジェクト名が Rensyuu1 ではなく Rensyuu2 となっている点だけで、他は全く同じです。Rensyuu2 を参照するには、「1. サンプル画面アプリを動作させる方法」 に説明のある操作方法で、以下を開いてください。

VB の場合:
(MANDALA.net をインストールしたフォルダ)\Vb\Rensyuu2.sln
(たとえば C:\Mandala9\Vb\Rensyuu2.sln)

C# の場合:
(MANDALA.net をインストールしたフォルダ)\Cs\Rensyuu2.sln
(たとえば C:\Mandala9\Cs\Rensyuu2.sln)

Java(eclipse) の場合:
(MANDALA.J をインストールしたフォルダ)\Java\
(たとえば C:\Mandala9\Java\)

◇ 新規プロジェクトファイル (およびソリューションファイル) の作成

VS2008 を用いて新たなプロジェクトファイル Rensyuu1.vbproj、およびソリューションファイル Rensyuu1.sln を作成します。

VS2008 を用いて新たなプロジェクトファイル Rensyuu1.csproj、およびソリューションファイル Rensyuu1.sln を作成します。

VS2008 を用いて新たなプロジェクトファイル Rensyuu1.vbproj (VB の場合) Rensyuu1.csproj (C# の場合)、およびソリューションファイル Rensyuu1.sln を作成します。

eclipse を用いて新たなプロジェクト Rensyuu1 を作成します。

プロジェクトファイルの作成に関する操作法:

メニュー操作 [ファイル(F)] - [新しいプロジェクト(P)...] によって、ダイアログボックス新しいプロジェクトが登場するので、次のように VB または C# の Windows アプリケーションを選んで、プロジェクト名を Rensyuu1 と指定して、ボタン OK をクリックます。

VB 用の新しいプロジェクトダイアログ

(クリックすると原寸大の図が登場します)

C# 用の新しいプロジェクトダイアログ

(クリックすると原寸大の図が登場します)

次にソリューションエクスプローラの中のプロジェクト Rensyuu1 をクリックして反転状態にしてください。 ソリューションエクスプローラは、メニュー操作 [表示(V)] - [ソリューションエクスプローラ(P)] で登場します。

そして、メニュー操作 [ファイル(F)] - [名前を付けて Rensyuu1 を保存(A)...] を行うと、ダイアログボックスプロジェクトの保存が登場するので、次のように指定します。すなわち、名前を Rensyuu1 とし、場所を C:\Mandala9\Vb と指定し、ソリューションディレクトリの作成は行わないという指定にして、ボタン上書き保存(S) をクリックします。

そして、メニュー操作 [ファイル(F)] - [名前を付けて Rensyuu1 を保存(A)...] を行うと、ダイアログボックスプロジェクトの保存が登場するので、次のように指定します。すなわち、名前を Rensyuu1 とし、場所を C:\Mandala9\Cs と指定し、ソリューションディレクトリの作成は行わないという指定にして、ボタン上書き保存(S) をクリックします。

そして、メニュー操作 [ファイル(F)] - [名前を付けて Rensyuu1 を保存(A)...] を行うと、ダイアログボックスプロジェクトの保存が登場するので、次のように指定します。すなわち、名前を Rensyuu1 とし、場所を C:\Mandala9\Vb (VB の場合) C:\Mandala9\Cs (C# の場合) と指定し、ソリューションディレクトリの作成は行わないという指定にして、ボタン上書き保存(S) をクリックします。

そして、メニュー操作 [ファイル(F)] - [名前を付けて Rensyuu1 を保存(A)...] を行うと、ダイアログボックスプロジェクトの保存が登場するので、次のように指定します。すなわち、名前を Rensyuu1 とし、場所を C:\Mandala9\Java と指定し、ソリューションディレクトリの作成は行わないという指定にして、ボタン上書き保存(S) をクリックします。

VB 用のプロジェクトの保存ダイアログ

(クリックすると原寸大の図が登場します)

C# 用のプロジェクトの保存ダイアログ

(クリックすると原寸大の図が登場します)

この操作によって、新たなプロジェクトファイル Rensyuu1.vbproj、およびソリューションファイル Rensyuu1.sln が下記のフォルダに同時に作成されます。なお、このように同時に作成するのではなく、最初に空のソリューションを作成して、その中にプロジェクトの追加を行ってもかまいません。

この操作によって、新たなプロジェクトファイル Rensyuu1.csproj、およびソリューションファイル Rensyuu1.sln が下記のフォルダに同時に作成されます。なお、このように同時に作成するのではなく、最初に空のソリューションを作成して、その中にプロジェクトの追加を行ってもかまいません。

この操作によって、新たなプロジェクトファイル Rensyuu1.vbproj (VB の場合) Rensyuu1.csproj (C# の場合)、およびソリューションファイル Rensyuu1.sln が下記のフォルダに同時に作成されます。なお、このように同時に作成するのではなく、最初に空のソリューションを作成して、その中にプロジェクトの追加を行ってもかまいません。

この操作によって、新たなプロジェクト Rensyuu1 が下記のフォルダに作成されます。

VB の場合:
(MANDALA.net をインストールしたフォルダ)\Vb\Rensyuu1
(たとえば C:\Mandala9\Vb\Rensyuu1)

C# の場合:
(MANDALA.net をインストールしたフォルダ)\Cs\Rensyuu1
(たとえば C:\Mandala9\Cs\Rensyuu1)

Java(eclipse) の場合:
(MANDALA.J をインストールしたフォルダ)\Java\Rensyuu1
(たとえば C:\Mandala9\Java\Rensyuu1)

もしも、サンプル画面アプリと同様に、ソリューションファイルをプロジェクトフォルダの親フォルダに作成したい場合には、名前を付けてソリューションの保存という指示をします。 すなわち、まずソリューションエクスプローラの中のソリューション Rensyuu1 をクリックして反転状態にしてください。 ソリューションエクスプローラは、メニュー操作 [表示(V)] - [ソリューションエクスプローラ(P)] で登場します。

そして、メニュー操作 [ファイル(F)] - [名前を付けて Rensyuu1.sln を保存(A)...] を行うと、ダイアログボックス名前を付けてファイルを保存が登場するので、保存先として C:\Mandala9\Vb と指定し、ボタン保存(S) をクリックします。

そして、メニュー操作 [ファイル(F)] - [名前を付けて Rensyuu1.sln を保存(A)...] を行うと、ダイアログボックス名前を付けてファイルを保存が登場するので、保存先として C:\Mandala9\Cs と指定し、ボタン保存(S) をクリックします。

そして、メニュー操作 [ファイル(F)] - [名前を付けて Rensyuu1.sln を保存(A)...] を行うと、ダイアログボックス名前を付けてファイルを保存が登場するので、保存先として C:\Mandala9\Vb (VB の場合) C:\Mandala9\Cs (C# の場合) と指定し、ボタン保存(S) をクリックします。

◇ フォームに関する変更

Windows アプリケーションとして作成したプロジェクトの中には、一つのフォームクラスが作成されています。 そして、プロジェクトを作成した直後の VS2008 では、このフォームがすぐに編集できるようにデザイナが開かれています。
 このフォームのクラス名は "Form1" となっていますが、 これを MANDALA.net の規約に合わせることが必要です。 フォームのクラス名は、"Fr_" というプレフィックスで始めるなどの規約があるからです。 そこで、クラス名を変更するのですが、直接ではなく間接的にファイル名を変更するとによってクラス名を変更します。 すなわち、ファイル名を Fr_Rensyuu.vb (VB の場合) Fr_Rensyuu.cs (C# の場合) と変更することにします。こうすると、VS2008 の働きでクラス名が Fr_Rensyuu に変更されます。 このように、ファイル名から拡張子を取り除いたものが、クラス名になります。

画面のソースファイル名とクラス名の変更:

フォームのソースファイル名を変更するための操作は次のとおりです。 メニュー操作 [表示(V)] - [ソリューションエクスプローラ(P)] を行うと、ソリューションエクスプローラが登場しますから、その中にツリー表示されている Form1.vb (VB の場合) Form1.cs (C# の場合) というファイル名を右クリックし、そこに現れるポップアップメニュー [名前の変更(M)] を左クリックするとファイル名が入力できるようになります。そこで、 "Fr_Rensyuu.vb" (VB の場合) "Fr_Rensyuu.cs" (C# の場合) と入力してください。

VB の場合の図
Visual Basic での AppliFrame を表示するウィンドウです
C# の場合の図
C# での AppliFrame を表示するウィンドウです

このように、ソースファイル名を変更するとクラス名も同時に変更されます。 このことを確かめるために、フォームをデザイナで表示してクリックしてフォーカスを当ててから、メニュー操作 [表示(V)] - [プロパティ ウィンドウ(W)] を行います。 すると、プロパティウィンドウが登場し、そのデザインカテゴリの中の (Name) プロパティが "Fr_Rensyuu" に変更されていることをご確認ください。 なお、プロパティウィンドウをアルファベット順 (ABC 順) にするとカテゴリとは関係なく (Name) プロパティが先頭近くに見つかるので、そこをご覧いただいてもかまいません。

フォームのプロパティウィンドウ (クラス名の確認)

そして、同じプロパティウィンドウの表示カテゴリの中の Text プロパティを "練習用アプリ" に変更してください。こうすることで、アプリケーションウィンドウのタイトルバーの文字列が "練習用アプリ" になります。

フォームのプロパティウィンドウ (Text の変更)

プロジェクトを作成した当初は "Form1" がスタートアップフォームとなっていましたが、上記の操作でこの名前も同時に変更されて、スタートアップフォームが Fr_Rensyuu となります。

◇ 動作確認 1

ここまでの操作で、画面の枠組みを作ることができたので、仮に動作させてみましょう。

このアプリケーションに実行の指示を与えるには、VS2008 に向かってファンクションキー F5 を押下します。 あるいは、メニュー操作 [デバッグ(D)] - [デバッグ開始(S)] によっても実行させることができます。

ここまでの操作手順に問題がなければ、下図のフォームの枠組みが現れます。

この実行を終えるには、このアプリケーションの画面右上端の 印のボタン閉じるをクリックするか、 または VS2008 に対するメニュー操作 [デバッグ(D)] - [デバッグの停止(E)] を行ってください。


4.2 フォームのデザイン

MANDALA.net の機能を試すために、 画面の構成要素として、ヘッド部ボディ部テール部を備えた画面レイアウトをデザインしてみましょう。

そして、最初は簡単なものがよいでしょうから、TextBox をヘッド部に 2 つ、ボディ部に 1 つ、テール部に 1 つもつものにしてみます。

◇ 画面へのコントロールの貼り付け

画面のデザインをするには、VS2008 のデザイナを用いて、ツールボックスから選択したコントロールを貼り付けていきます。 ツールボックスがまだ登場していなければ、 メニュー操作 [表示(V)] - [ツールボックス(X)] を行えば現れます。

この方法で、下図のように 4 つの TextBox を画面の上に配置してください。 ヘッド部の項目とする 1 番目と 2 番目の TextBox は、ここの例では横に並べてみましょう。 そして、3 番目の TextBox と 4 番目の TextBox の間には、スペースを空けることにします。 なぜなら、この 3 番目の TextBox をボディ部の項目とするので、テール部の項目となる 4 番目の TextBox との間に、いくつかの TextBox が置けるように余裕をもたせる必要があるからです。

◇ コントロールの名前の変更 (命名)

このままの状態ですと、TextBox の名前が内容をよく表したものではありませんし、 MANDALA.net が制御する MANDALA コントロールの命名の規約に合っていませんから、 以下の手順に従って正式な名前に変更することが必要です。

コントロールの名前の設定に関する操作法:

コントロールを一つ一つ選択した後に (すなわちクリックしてフォーカスを当てた後に)、 VS2008 のプロパティウィンドウのデザインカテゴリの中の (Name) プロパティを変更します。 なお、プロパティウィンドウをアルファベット順 (ABC 順) にするとカテゴリとは関係なく (Name) プロパティが先頭近くに見つかるので、そこを変更してもかまいません。

MANDALA コントロールの名前には、以下の説明のように、 決まった形のプレフィックス (接頭語) を付ける規約になっています。 なお、命名の規約とその意味については 「9. 特別の意味をもつ名前」 をご参照ください。

1 番目と 2 番目の TextBox には、 ヘッド部であることを示すために "Hd_" という 3 文字の文字列 (プレフィックス) で始まる名前を付けてください。

ここでは、1 番目を Hd_CdBangou に、2 番目を Hd_Yobina という名前にします。 ちなみに、これらは、それぞれ CD (コンパクトディスク) 番号、および呼び名という意味です。

同様に、3 番目の TextBox には、ボディ部であることを示すために "Bd_" という文字列 (プレフィックス) で始まる名前を付けてください。

ここでは、Bd_KyokuMei_0 という名前にします。ちなみに、これは曲名という意味です。 一般に、ボディ部 ("Bd_" で始まる項目) および拡張ボディ部 ("Ed_" で始まる項目: 本節の練習では使用しません) の項目には "_0" というサフィックス (接尾語) を付加する規約になっています。したがって、このような項目名にします。

さらに、4 番目の TextBox には、テール部であることを示すために "Tl_" という文字列 (プレフィックス) で始まる名前を付けてください。

ここでは、Tl_Kyokusuu という名前にします。 ちなみに、これは曲数という意味です。

なお、これらの名前からプレフィックスを除いた部分を項目略称と呼びます。 上記の例では CdBangou, Yobina, KyokuMei, Kyokusuu は項目略称です。

◇ フォントの設定

これら 4 つの MANDALA コントロールに対して、 フォントの設定をしてください。すなわち、Font というプロパティの値を以下のように設定します。 ここでは、4 つとも同じフォントにするので、一括して設定することにします。

まず、Ctrl キーを押下した状態で、これら 4 つのコントロールを一つずつマウスクリックしていくことで、4 つをすべて選択した状態にします。 そして、VS2008 のプロパティウィンドウの中の Font プロパティ値の右端のボタン (マウスカーソルをそこに合わせると現れます) をクリックすると、ダイアログボックス フォント が登場します。 そこで、MS ゴシック のような非プロポーショナルフォント (固定ピッチフォント) を指定してください。誤って、プロポーショナルフォントを指定すると、 表示される文字ごとに横幅が変わってしまうので、数値を扱う業務プログラムとしては不都合です。非プロポーショナルフォントであれば、そういうことはありません。

◇ 表示例の設定と横幅の調整

仕上げの作業として、それぞれの Text というプロパティの値として表示例を設定してください。 こうすると画面の完成形の感じがつかみやすくなりますし、TextBox の横の長さの調整が行いやすくなります。 表示例の設定は、TextBox などのコントロールを一つ一つ選択した後に (すなわちクリックしてフォーカスを当てた後に)、 そのプロパティウィンドウの中の Text プロパティを変更します。

具体的に述べると、ヘッド部の最初の項目に最大 9 文字の英数字を格納するのであれば、たとえば表示例として "A23456789" のような 9 文字を設定してください。

また、ヘッド部の 2 番目の項目に最大 8 文字の全角文字 (すなわち古い表現方法で言うと 2 バイト文字) を格納するのであれば、たとえば表示例として "タイトル略称の欄" のような 8 文字を設定してください。

同様に、ボディ部の項目に最大 15 文字の全角文字 (すなわち古い表現方法で言うと 2 バイト文字) を格納するのであれば、たとえば表示例として "曲名格納用のボディ項目の表示例" のような 15 文字を設定してください。

そして、テール部の項目に最大 3 文字の数字を格納するのであれば、たとえば表示例として "123" のような 3 文字を設定してください。

この後で、TextBox の横の長さを調整して、下図のように表示例がぴったりと収まるようにしてください。 横の長さを調整は、TextBox の右端をドラッグすることによって行えます。

◇ 参考 (非プロポーショナルフォント):

一般に、表示できる文字列の長さは、コントロールの横幅という物理的な大きさに制約されます。 この制約を取り除くために、コントロールの横幅からあふれた文字列に関しては横スクロールする方法が知られています。

しかし、この方法は、画面を見渡す際に、はなはだ不都合です。 なぜなら、たとえば一見すると 「登録」 と表示されているようでも、 その内容は 「登録不可」 かもしれないからです。 ですから、横スクロールできるかどうかマウスを近づけて確かめてみないと、その内容を確認できません。 これでは見にくいので、業務プログラムにおいては表示文字列をコントロールの横幅に収まるようにするのが普通ですし、こうすることをお勧めしております。

これへの反論として、表示文字列がコントロールの横幅からあふれる場合には、 表示文字列の最後尾を 「...」 のように変えることで、 部分的な表示であることを示す手法を採用すればよいという意見があるかもしれません。 しかし、この手法を用いたとしても、マウスを近づけるなどして横スクロールをしないと、 その内容を読み取ることができないことに何ら変わりはありません。

ちなみに、表示文字列の文字数とコントロールの横幅の関係については、 フォントの種類に影響を受けるので、注意が必要です。 プロポーショナルフォントでは、文字ごとにその横幅が異なるので、 極めて取り扱いにくくなります。 ですから、業務プログラムでは非プロポーショナルフォント (固定ピッチフォント) を使うことをお勧めしております。

さらに、非プロポーショナルフォントの中には、 全角文字の横幅が半角文字の 2 倍でないものもあります。 これも扱いにくいので、フォント MS ゴシック のように、 全角文字の横幅が半角文字のきっちり 2 倍になっているフォントを使うことをお勧めいたします。

◇ 動作確認 2

ここまでの操作で、画面レイアウトのデザインができたので、仮に動作させてみましょう。

実行させるには、VS2008 に向かってファンクションキー F5 を押下してください。または、[デバッグ(D)] - [デバッグ開始(S)] というメニュー操作よっても実行させることができます。実行の指示を与えると、以下のような動きのない画面が現れます。

確認が済んだら、アプリケーションを終了させてください。


4.3 コード合成の実施

◇ プログラムコードの機械生成

ここまでの操作によって、機械生成をするために最低限必要な準備が整ったので、 MANDALA.net コード合成ツールを起動して、試しに機械生成の指示を与えてみましょう。 コード合成ツールの起動方法は、「2. コード合成ツールの起動」 に書いてあります。

コード合成ツールを起動するとダイアログボックスプロジェクトの選択が登場しますから、ここまで作成してきた次のプロジェクトを指定します。

VB の場合:
(MANDALA.net をインストールしたフォルダ)\Vb\Rensyuu1\Rensyuu1.vbproj
(たとえば C:\Mandala9\Vb\Rensyuu1\Rensyuu1.vbproj)

C# の場合:
(MANDALA.net をインストールしたフォルダ)\Cs\Rensyuu1\Rensyuu1.csproj
(たとえば C:\Mandala9\Cs\Rensyuu1\Rensyuu1.csproj)

Java の場合:
(MANDALA.J をインストールしたフォルダ)\Java\Rensyuu1\.project
(たとえば C:\Mandala9\Java\Rensyuu1\.project)

プロジェクト選択後、次のダイアログボックスが登場するかもしれません。 これは、VS2008 が開かれたまま、機械生成をしようとしていることを警告するものです。 VS2008 を閉じてあれば、このダイアログボックスは登場しません。

MANDALA.net コード合成ツールは、対象となるプロジェクトに含まれるソースファイルを書き換えます。 もしも、VS2008 が開かれたままであって、そこに保存されていない変更点がある場合、そのファイルに対する更新処理を 2 箇所で行おうとするので、競合してしまうおそれがあります。 そこで、このダイアログボックスは、そのような競合が発生しないように、注意を喚起しています。

すべての変更点が保存してあれば (あるいはここですべての変更点を保存してから)、ボタン保存済みをクリックしてください。 なお、ここでボタンキャンセルをクリックすると MANDALA.net コード合成ツールは終了します。

◇ 総括表の内容の設定

新たに作成してプロジェクトを指定して初めて機械生成する場合には、次の確認ダイアログボックスが登場します。

これは、総括表の内容をチェックする必要があることを知らせるダイアログボックスです。 ここでは、ボタン OK をクリックして、先に進んで、総括表の内容をチェックすることにしましょう。 なお、ボタンキャンセルをクリックすると、MANDALA.net コード合成ツールは終了します。

この後、MANDALA.net コード合成ツールは、生成処理に先立つ前処理として、画面や各種部品の解析処理を行い、総括表を表示します。 なお、解析処理には少しばかり時間がかかりますが、待ってください。

総括表が表示されたら、次のように設定します。

MANDALA.net コード合成ツールの表示例 (VB の場合)

(クリックすると原寸大の図が登場します)

MANDALA.net コード合成ツールの表示例 (C# の場合)

(クリックすると原寸大の図が登場します)

アプリの型は、データエントリ (のまま) にしてください。

そして、明細総行数20, 表示行数4 に設定してください。

さらに、それぞれの項目に対して、総括表の情報 (拡張プロパティ) として次のような設定をしてください。 ただし、表示例を設定した効果によって、ほぼそれらしい設定になっているので、この画面の場合には下記の太文字の部分だけの修正で済みます。

項目略称 H 入出 項目長 E A F C P B フォーマット S
Hd CdBangou 0 3000 コード 9 A L N ADU N 1    
Hd Yobina 0 1000 名称 16 M L N NH- N 1    
Bd KyokuMei 0 3000 名称 30 M L N NH- N 1    
Tl Kyokusuu 0 1000 十進数 3 A R N 0D- N 1    

これらの総括表の各項目の意味については、マニュアル 「MANDALA.net 基本仕様」 の総括表の情報の説明を参照してください。 また、MANDALA.net コード合成ツールの動作中であればファンクションキー F1 によるヘルプ表示からもそれぞれの欄の意味が分かります。

なお、このサンプル画面アプリでは設定が不要なのですが、数多くの項目を含む画面アプリの場合には、フォーカスパス (フォーカスの移動する順) に従って総括表内のコントロールの順番を並べ替えてください。

◇ プログラムコードの機械生成の指示

総括表の設定が済んだら、プログラムコードの機械生成の指示を与えてください。 すなわち、メニュー操作 [操作(O)] - [コード合成(G)] を行います。 これで、生成処理が始まり、ほどなく生成の完了を伝えるメッセージが出て、プログラムコードの機械生成が完了します。


4.4 アプリケーションの動作テスト

◇ 機械生成されたソースプログラムの取込み

VS2008 で Rensyuu1 を開いた状態のまま機械生成を行った場合には、下図のダイアログが登場します。 しかし、Rensyuu1 を開いた状態でなければ、このようなダイアログは登場しませんし何の問題もありませんから、ここの説明を読み飛ばして、以下の動作確認 3 に進んでください。

VS2008 で Rensyuu1 を開いた状態のまま、その中のソースプログラムが (いわば VS2008 にとっては) 外部の MANDALA.net コード合成ツールで機械生成されると、そのことを VS2008 は察知します。 そして、VS2008 は下図のダイアログボックスを表示して、機械生成されたソースプログラムを取り込むかどうかを問い合わせてきます。

ここで、ボタン再読み込み(R) をクリックすれば、機械生成されたソースプログラムを VS2008 に取り込むことができます。 このときに、機械生成されたソースプログラムの旧版生成対象の画面ソースプログラムが開いたままであったとしても、それらは新版に置き換えられます。

なお、状況によっては次のようなダイアログが表示されることもあります。

この場合は、はい(Y) またはボタン すべてに適用(A) をクリックすれば、機械生成されたソースプログラムを VS2008 に取り込むことができます。

◇ 動作確認 3

Rensyuu1 が VS2008 で開かれていなければ、最初に開くことから始めてください。 そして、VS2008 に向かってファンクションキー F5 を押下して、作成中の画面アプリ Rensyuu1 に実行の指示を与えてください。または、F5 の代わりに、[デバッグ(D)] - [デバッグ開始(S)] というメニュー操作よっても実行させることができます。

この操作によって、ボディ部の明細行を 4 行とスクロールバーをもつ画面 (下図) が登場します。 この画面は、動作確認 2 の場合と異なり、いろいろな操作にアクティブに反応します。 これは、MANDALA.net コード合成ツール が実動フレームワークを呼び出すプログラムコードを機械生成した成果です。

トラブルシューティング:

もしもボディ部の明細行が 1 行しか表示されていないとすれば、 MANDALA.net の総括表において、表示行数として 4 を設定したかどうかの確認をしてください。 それから、明細総行数として 20 を設定したかどうかの確認もしてください。 そして、これらを指定して、再度、機械生成の指示を与えてください。

◇ カーソルの動きなどの操作性

画面が登場した直後、カーソルはヘッド部の項目 Hd_CdBangou の左端にあるはずです。これは、総括表に左詰め (A 欄を L) と指定した効果です。

Hd_CdBangou にインプットできる文字は、英数字に限られています。 そして、小文字をインプットすると大文字に変更されます。 これは、総括表の文字セット欄の指定 (C 欄が "ADU") の効果です。

Hd_CdBangou にインプットできる文字操作は、9 文字まで可能です。 これは、総括表の項目長欄に 9 と指定した効果です。 そして、9 文字インプットすると次の項目 (この例ではボディ部の項目) にフォーカスが移動するようになっています。 これは、総括表に自動エンター (E 欄を A) と指定した効果です。

ヘッド部の項目 Hd_Yobina にはカーソルを移動できませんし、 この項目をクリックしてもそこにカーソルを移動させることができません。 これは総括表に、この項目を (必須) 表示項目 (入出欄を 1000) と指定した効果です。

Enter キーを押すとカーソルは次の明細行に移り、ボディ部の最終の明細行までインプットすると自動的にスクロール動作を開始します。 ただし、データがインプットされていないときにはスクロールしません。

これらを確かめるために、ヘッド部の項目 Hd_CdBangou に ABCDEFGHI をインプットし、ボディ部の項目 Bd_KyokuMei に 1, 2, 3, ... , 20 とインプットしてみてください。

なお、Enter キーをいくら押してもテール部の項目 Tl_Kyokusuu にカーソルを移動できませんし、 この項目をクリックしてもそこにカーソルを移動させることができません。 これは総括表に、この項目を (必須) 表示項目 (入出欄を 1000) と指定した効果です。

◇ 画面にインプットしたデータの登録

ボディ部の項目 Bd_KyokuMei が空のままの状態で Enter キーを押下するか、またはボディ部の最終行 (20 行目) で Enter キーを押下すると 「インプットの必要な項目が残っています。」 というメッセージが表示されます。 これは、アプリ操作者から“画面上にデータが整ったので登録せよ”という指示があったにもかかわらず、データが整っていない場合に表示されるメッセージです。 つまり、総括表の入出欄でデータ必須だとした項目であるにもかかわらず、その項目が空の状態であることを警告するものです。

“登録せよ”という指示は、一般にはボタンやメニュー項目やファンクションキーで明になされるのですが、ある条件の下では Enter キーを押下することによっても暗になされます。 すなわち、カーソルが画面の中のインプット可能な項目うちの最終位置にあるときに Enter キーを押下した場合か、 またはテール部にインプット可能な項目が存在しないケースにおいてボディ部のカレント明細行の項目がすべて初期状態のときに (つまり何もインプットせずに) 必須入力項目上で Enter キーを押下したような場合です。 こうした場合には、“画面上にデータが整ったので登録せよ”という暗黙の指示だとみなされ、 画面データの登録処理が始動します。

画面データの登録処理を開始するにあたっては、まず画面データ完備チェックがなされます。 この完備チェックでデータに不備があると判定されると、上述のメッセージ 「インプットの必要な項目が残っています。」 が表示され登録処理は中止となります。 画面データ完備チェックは、入力項目だけでなく、表示項目に関してもなされます。 ですから、必須表示項目としたヘッド部の項目 Hd_Yobina およびテール部の項目 Tl_Kyokusuu が空欄のままだと、このメッセージが表示されることになります。

このチェックの関門を通過するには、 これらの項目を任意表示項目に変更してしまう (そして再生成を実施する) 方法もありますが、 もしもこれらの項目に何らかの値が設定されることが必須であれば、これは正しい処置ではありません。 正しい処置は、後述する項目フックメソッド (たとえば他項目からの派生値表示を行う Derived) を追加することによって、これらの項目に何らかの値が設定されるようにすることです。

◇ メッセージについて

ここで、アプリケーションをいったん終了させ再度実行させてから、以下に述べる操作をしてみましょう。 それぞれの操作に応じていろいろなメッセージが表示されることを体験できます。

作成中の画面アプリ Rensyuu1 に実行の指示を与えてから、ヘッド部の項目 Hd_CdBangou に何もインプットせずに Enter キーを押下してください。 すると、ステータス表示域に 「ヘッド部のインプットを完結させてください。」 というメッセージが表示され、ボディ部にフォーカスが移動しないように制御されます。 このメッセージは、ヘッド部のすべての必須入力項目に何らかの値がインプットされるまでは、ボディ部にフォーカスを移動させないように、ヘッド部入力先行機能が働いていることを示しています。 なお、画面オプションの指定によってこの機能を使わないように設定することもできます。

ヘッド部の項目 Hd_CdBangou に何かインプットしてから、4 行目の空白の明細行をクリックすると 「この上に空白の明細行があるので、ここにデータをインプットすることはできません。」 というメッセージが表示されます。 これは、空の明細行を残したまま、その下の明細行にデータをインプットしようとしているという警告のメッセージです。 こうしたことができないようにチェックがなされているのです。

ちなみに、これらのメッセージを含むすべてのメッセージについて、 そのメッセージの内容およびメッセージを表示するかどうかを自由にカスタマイズできるようになっています。 また、メッセージをステータス表示域に表示するのか、あるいはダイアログボックスで表示するのかなども自由にカスタマイズできるようになっています。

これらについては、マニュアル 「MANDALA.net 基本仕様」 のメッセージのカスタマイズの説明を参照してください。


4.5 フォームの整形

この辺りで、見栄えの良い画面レイアウトになるように、フォームの整形を行っておきましょう。 アプリケーションを終了させて、以下の画面編集操作を行ってください。

見出しのラベル
各項目 (コントロール) の見出しとして、画面に適切なラベル (Label) を貼り付けると、より分かりやすい画面になることでしょう。
 
ステータス表示域や動作モード表示域の調整
エラーメッセージなどを表示するステータス表示域動作モード表示域が不要な場合には、プロパティウィンドウを呼び出してそれぞれの Top または Left プロパティを大きな値に変更することで、これらのコントロールを画面の外側に移動してください。
 
ヘッド部とボディ部とテール部の位置関係の調整
ヘッド部とボディ部とテール部の位置関係は、この順に縦に並べてください。たとえば、テール部がボディ部の上部にあると正しく動作しません。(なお、この制約は画面オプション Bd/Ed は Tl より上という指定をオフにすれば取り除くことができます)

このような整形作業を行うと、たとえば下図のようなフォームになります。

そして、これを実行させると、下図のようなアプリケーション画面になります。


入門の手引き 第 4 章 前の章 次の章