Project |
Formモジュール = オブジェクト + コード |
---|
普通に新しいプロジェクトで標準.exeを開くと、Formモジュールが自動的に作成されます。 Formモジュールは以下の二つで構成されます。 分かりやすく階層で示します。 |
[Formオブジェクト] |
実行したときのウィンドウイメージを作成します。
コードと対になっています。
ここにボタンやラベルなど、様々なものを貼り付けてウィンドウの見かけを作ります。 タイトルバーの所の表示「Project1 - Form1 (Form)」は、 |
[Formコード] |
ここに実際のプログラムを書きます。
オブジェクトと対になっています。
例えば、オブジェクトに貼り付けたボタンが押されたときのプログラムなどを書きます。 タイトルバーの所の表示「Project1 - Form1 (コード)」は、 |
プログラム作成の基本手順 |
---|
プログラムの作成は、基本的には以下のような手順で行います。 ここではボタンをFormオブジェクトに貼り付ける場合の例を示します。 (1)ツールボックスからCommandButtonコントロールを選択し、Formオブジェクトに貼り付ける。 (2)CommandButtonが押された時のプログラム(イベントプロシージャ)を書く。 (3)必要ならば、イベントプロシージャから呼び出されるサブルーチンを書く。 |
Formモジュールと標準モジュール | |||
---|---|---|---|
小規模なアプリケーションを作成する場合は、Formモジュールは一つだけで十分です。 しかし、普通はどうしても複数のFormモジュールを持つアプリケーションにならざるを得ません。 そうすると、いろんなFormコードで同じようなコードを書いてしまうことが多々あります。 そんなときには「標準モジュール」を使いましょう。 標準モジュールは、Formオブジェクトを持たないコードだけのモジュールです。 ここに共通のプロシージャ(関数)を置いておき、各Formコードからそのプロシージャを呼び出せば良いのです。 これでプログラムは短くなり、すっきりします。 | |||
Module | Form オブジェクト |
コード | 特徴 |
Form モジュール |
持つ | 持つ | Formオブジェクトとコードが合体したモジュールです。 Formモジュールのコードはローカルなプロシージャになります。 (明示的にパブリック宣言した時を除く) |
標準 モジュール |
持たない | 持つ | コードだけのモジュールです。 標準モジュールのコードはパブリックなプロシージャになります。 (明示的にローカル宣言した時を除く) |
スタートアップの設定(Formモジュールを初めに起動編) | |
---|---|
作成したプロジェクトが複数のFormモジュールを持つ場合、
起動時にどのFormモジュールを初めに動作させるかを指定することができます。
指定は以下のドロップダウンリストの中からForm(Formのオブジェクト名)を選択することにより行います。
つまり、いちば〜ん初めに何かをさせたい場合は、 指定したFormモジュールのForm_Inisializeのイベントプロシージャを書いておけば良いのです。 以下に具体例を示します。 | |
起動時にウィンドウを最大化で表示 | |
起動時に最大化したいFormモジュールのコードに以下のプログラムを追加します。
Private Sub Form_Initialize() Me.WindowState = vbMaximized End sub | |
Private | プライベートなプロシージャ(関数)。 つまり、このコードが書いてあるFormモジュール以外から呼び出せない関数であることを示す。 |
Sub | 戻り値のないプロシージャであることを示す。 ちなみに戻り値のあるプロシージャの場合はSubの代わりにFunctionとなる。 |
Form_Initialize() | Form_Initialize()〜End subまでがフォームの初期化イベントであることを示す。 |
Me | オブジェクト自身(自分)、つまりこの場合はFormオブジェクト自身のことを示す。 |
.(ドット) | .(ドット)の左辺に対する「プロパティ(属性)のうち、」という意味である。 |
Me.WindowState | 「Formオブジェクトのプロパティ(属性)のうち、WindowStateというプロパティ」という意味である。 |
= vbMaximized | 「最大化を示す値を代入」という意味である。 このvbMaximizedは定数2と見なすようにVB自身が宣言している。 「= vbMaximized」の代わりに「= 2」と書いても良いのだが、 あとでプログラムを読み直すときの見やすさなどを考えると、 やはり「= vbMaximized」のほうが良い。 この他に指定できる値には以下がある。 |
End Sub | 戻り値のないプロシージャの終わりを示す。 ちなみに戻り値のあるプロシージャの場合はSubの代わりにFunctionとなる。 |
スタートアップの設定(標準モジュールを初めに起動編) | |
---|---|
作成したプロジェクトが標準モジュール(ウィンドウを持たないプログラム)を持つ場合、
起動時に標準モジュール内のプログラムから動作が始まるようにも設定可能である。
しかしながら、Formが任意のFormモジュールから起動するように指定できるのに対し、
標準モジュールでは任意の関数から起動するようにはできない。
標準モジュールから起動する場合は、Sub mainという関数から実行される。
よって、標準モジュールのコードのどこかに必ずSub main関数を作っておく必要がある。
指定の仕方はFormのスタートアップの設定と同様に、
以下のドロップダウンリストの中からSub mainを選択することにより行う。
どういうときに使うかというと、 などです。 以下に具体例を示します。 | |
起動時にメッセージを表示する | |
標準モジュールに以下のプログラムを書くことにより、フォームが開く前にメッセージボックスを表示します。
プロジェクトには以下のモジュールが存在することが前提です。
Sub main() MsgBox "一番初めにこの文字列が表示されます" Form1.Show End Sub | |
Sub main() | PrivateやPublicの指定なしでいきなりSubが来ます。 これはSub Mainを作る際の決まり事だと考えてください。 ちなみに、 ・Subとは戻り値のないプロシージャであることを示します。 ・標準モジュール内でPrivateを明示的に付けない場合、Publicと判断されます。 ・標準モジュール内でPrivateと明示的に付けた関数は、 その標準モジュールのファイル内だけから呼び出すことのできる関数と判断されます。 |
MsgBox "文字列" | ダブルクォーテーションで囲まれた文字列をメッセージボックスで表示し、プログラムは停止します。 メッセージボックスの「OK」ボタンを押すと、再びプログラムは次のコードから処理されます。 |
Form1.Show | Form1オブジェクトのShowメソッドが実行されます。 簡単に言うと、Form1が表示されるというだけです。 詳細に言うと、このメソッドで様々なことが内部的に発生しています。 Showメソッドは、Hideメソッドなどで画面を隠している状態(メモリ上に残っている状態)のものを表示状態にするときには、 ただ単に、非表示から表示に切り替えるだけです。 ところが、今回の場合はForm1はメモリの中に存在さえしない状態です。 メモリの中に存在しない物をShowメソッドで表示しろと言われても表示できる訳がありません。 そこで、VBは、存在しないFormオブジェクトのShowメソッドが実行された場合、 全て自動的に、 |
プロジェクトの名前 |
---|
普通に新しいプロジェクトで標準.exeを開くと、自動的にプロジェクトの名前はProject1と名付けられます。
これを変更するには、 |
アプリケーションのタイトルとアイコン |
---|
アプリケーションのタイトルとアイコンを変更するには、 |
アプリケーションのバージョン情報 |
---|
VBのアプリケーションでは以下のバージョン情報を設定することができます。
これらの情報を入力/変更/修正するには、 |
アプリケーションのバージョン番号 |
---|
VBで作成した配布用のプログラムには任意のバージョン番号を設定することができます。
バージョン番号は以下の3つから構成されます。
これらの番号を入力/変更/修正するには、 |
アプリケーションのバージョン番号をプログラムで使う | ||
---|---|---|
バージョン番号はプログラムから呼び出すことができます。 アプリケーション自体はAppで表され、バージョン番号の各プロパティは以下のようになります。 たとえば、Formのタイトルバーにバージョン番号を入れたい場合は以下のようなプログラムとなります。 タイトルバーにバージョン番号を表示 |
| Private Sub Form_Load() Me.Caption = App.EXEName _ & Str(App.Major) & "." _ & Str(App.Minor) & "." _ & Str(App.Revision) & "." End Subちなみに、App.EXENameはアプリケーションのexeファイル名プロパティを参照します。 |