Visual Basic 業務アプリ構築法 第6回

VBプログラミングの第一歩~フォーム、コード、プロパティの関係を知る
長谷川裕行
1998/9/16

長谷川 裕行 (はせがわ ひろゆき)
有限会社 手國堂 代表取締役
http://www.hirop.com/
テクニカルライターとして活躍。プログラミングに関する著書多数、DB Magazineなどにも多くの記事を提供している。

前回(第5回)で、コマンドボタンをクリックしたら、ラベルのメッセージが切り替わるという非常に単純なアプリケーションを作ってみました。今回は、このアプリケーションを作る過程を振り返りながらVBによるアプリケーション開発の作法を説明し、最後に機能を付け加えてみます。


VBプログラミングの3つのポイント

すでに何度も書いてきましたが、VBによる開発の特徴は、

1. フォームをデザインし、コードを記述する
2. イベントに応じてプロシージャが実行される
3. オブジェクトのプロパティとメソッドを操作する

の3点に集約できます。

前回は、まず「1.フォームをデザインし、コードを記述する」ことを体験していただくため、あえて「何をしているのか」については説明しませんでした。今回は、残る「2.イベントに応じてプロシージャが実行される」「3.オブジェクトのプロパティとメソッドを操作する」について、前回作ったアプリケーションを基に説明していきます。
この3点について、実際の操作手順とその意味を理解しておけば、VBによるアプリケーション開発の基本的な作法は身に着いたことになります。ステートメントや関数、プロパティメソッドなど難しそうな要素はたくさんありますが、細部にこだわらず全体を大まかに捉えることが理解の早道です。
具体的な関数の使い方や個々のプロパティの意味などは、アプリケーションを作っていくうちにマスターできます。データベースの扱いについても、結局はこの段階での基本事項の理解にかかってきます。とにかく、全体像を捉えておきましょう。



プロパティの設定と変更

オブジェクトの性質であるプロパティは、フォームデザイン時に既に操作しています。マウスのドラッグやプロパティウィンドウでの設定によってプロパティは変更され、結果としてオブジェクトの外見も変更されます。


- CaptionとFontプロパティ -

フォームのデザインでは、貼り付けたラベルの文字列を変更するために、プロパティウィンドウの"Caption"の欄を"Welcome to VB World!"と書き換えました。"Caption"は、ラベルコントロールに表示する文字列を保持するプロパティです。
次に、同じラベルのフォントを変更するため、プロパティウィンドウの"Font"の欄を操作しました。これがFontプロパティです。



- 位置とサイズもプロパティ -

このように、フォームに貼り付けたコントロールは特定のプロパティの値を変更することで、異なる状態に変化します。  上述のように明示的にプロパティウィンドウで値を書き換えなくても、マウスのドラッグによってフォームに貼り付けたラベルやコマンドボタンの位置を移動させたり、あるいは大きさを変えたりした場合も、それに応じてプロパティが変化します。
上述のように明示的にプロパティウィンドウで値を書き換えなくても、マウスのドラッグによってフォームに貼り付けたラベルやコマンドボタンの位置を移動させたり、あるいは大きさを変えたりした場合も、それに応じてプロパティが変化します。

コントロールの位置は、以下のプロパティで決まります。
 Top : フォーム上辺からコントロール上辺までの距離
 Left : フォーム左辺からコントロール左辺までの距離

つまり、フォームの左上角点を座標x=0, y=0として、Topはコントロール左上角点のy座標、Leftは同じくx座標を示していることになります。

また、大きさは以下のプロパティで決まります。
 Width : 横のサイズ(幅)
 Height : 縦のサイズ(高さ)


図1:フォーム上のコントロールの位置とサイズ



- プロパティの変更 -

VBでは、画面表示の標準の単位としてTwipsを用います。1twipは1/20ポイントで、画面の解像度に左右されないサイズ指定が可能です。ただ、マウスのドラッグで位置とサイズを決めた方が手早いので、最初のフォームデザインではプロパティウィンドウのTopやWidthに直接値を入力することはありません。
複雑な処理を作る場合には、オープンするウィンドウのサイズや位置を明確に規定したり、その中のコントロールのサイズや位置を変化させる必要も出てきます。そのような場合に、Top、Leftなどのプロパティを操作します。
位置やサイズの変更については、それがプロパティとして操作できることを知っていれば十分です。具体的な変更方法については、複雑な処理を組み上げる段階で追って説明します。



- 参考 - 画面表示で用いる単位について

画面表示で用いる標準単位は、ScaleModeプロパティによって変更できます。標準単位は標準ではTwipsですが、以下のようにピクセル単位やミリメートル単位の指定も可能です。
ScaleModeはプロパティウィンドウには表示されないため、プログラムの中でソースコードレベルで変更しなければなりません。ScaleModeプロパティに設定する値は整数ですが、意味を分かりやすくするため以下のように記号定数※1を割り当ててあります。
また、ScaleModeによって変更した標準単位で位置やサイズを規定するには、ScaleTop、ScaleLeft、ScaleWidth、ScaleHeightプロパティを用います。


記号定数 単位
vbUser 0 ScaleHeight、ScaleWidth、ScaleLeft、ScaleTop の各プロパティのうち1つ以上が独自の値に設定されていることを示します。
VbTwips 1 twip(既定値)
VbPoints 2 ポイント
VbPixels 3 ピクセル
vbCharacters 4 キャラクタ(横1キャラクタ:120 twip、縦1キャラクタ:240 twip)
VbInches 5 インチ
VbMillimeters 6 ミリメートル
VbCentimeters 7 センチメートル
※1:プログラムで用いる一定の値(定数)に文字列による名前を与えたもの。本稿のテーマはVBの入門であり、初心者向けのプログラミング入門ではありません。変数、定数、定義などの基本用語が分からない方は、プログラミングの入門書などをお読みください。


ソースによるプロパティの変更

フォームのデザインを終えたら、続いてソースコードを入力しました。ここで、コントロールのプロパティを操作しています。コードの意味を見ていきましょう。


- ソースでプロパティを変更する -

フォームに貼り付けたコマンドボタンのCaptionプロパティは、"切り替え"という文字列に変更しました。このボタンをダブルクリックしてオープンしたコードウィンドウに、以下のようなソースを入力しました。

Private Sub Command1_Click()
  Label1.Caption = "Enjoy Programming!!"
  Label1.ForeColor = &HFF00FF
End Sub

1行目と4行目は最初から表示されていましたから、実質的に入力されたソースコードは中の2行(2行目と3行目)です。  先にCaptionプロパティについて説明したので、このソースの意味はもうお分かりですね。ソースコードによって、ラベルコントロールのプロパティを変更しているのです。


- Captionプロパティ -

2行目から見ていきましょう。

Label1.Caption = "Enjoy Programming!!"

とは、"Label1"という名前のオブジェクトの"Caption"プロパティの値に"Enjoy Programming!!"というデータを代入することを表しています。
つまり、ラベル"Label1"のキャプションを"Enjoy Programming!!"に変更するということになります。
- ForeColorプロパティ -

3行目の

Label1.ForeColor = &HFF00FF

では、同じ"Label1"の"ForeColor"プロパティに"&HFF00FF"というデータを代入しています。ForeColorは「前景色」――画面の前面に表示される色ですから、ラベルなど文字を表示するコントロールでは「文字の色」となります。
"&HFF00FF"は「赤紫」(マゼンタ)を示す数値です。色は16進数を使って数値で指定します。&Hは、続く数値または記号が16進数であることを示します。コンピュータでは2進数と10進数の仲立ちをさせる意味で16進数がよく使われます。詳しくは<参考>「色指定の方法」をお読みください。



- 参考 - 色指定の方法

16進数による色の指定では、何色かすぐには分かりません。そこでVBには、以下のように色に対する記号定数が定義されています。

色を示す記号定数

記号定数 色名
vbBlack &H0
vbRed &HFF
vbGreen &HFF00
vbYellow &HFFFF
vbBlue &HFF0000
vbMagenta &HFF00FF 赤紫(マゼンタ)
vbCyan &HFFFF00 水(シアン)
vbWhite &HFFFFFF

また、RGB関数を使って赤、緑、青の光の三原色を混ぜ合わせ、色を指定することもできます。RGB関数は、以下のようにして使います。
RGB(赤の度合、緑の度合、青の度合)
それぞれの色の度合は0~255までの数値(10進数)で指定します。以下の表は、組み合わせの一例です。中間の値を指定すれば中間色も出せますが、プログラムが稼働しているコンピュータの表示色の設定によっては、必ずしも指定した中間色が表示できるとは限りません。


RGB関数の引数の組み合わせ

0 0 0
0 0 255
0 255 0
シアン 0 255 255
255 0 0
マゼンタ 255 0 255
黄色 255 255 0
255 255 255


イベント駆動とプロシージャの関係

VBで作るアプリケーションはイベント駆動型となります。ユーザーの操作をイベントとして受け取り、それに応じた処理が実行される仕組みは、フォーム上のコントロールととコードの結びつきで決まります。


- 処理の始まりと終わり -

フォーム上のコマンドボタンをダブルクリックしてオープンしたコードウィンドウには、予め
Private Sub Command1_Click()



End Sub

の2行が表示されていました。これが、コマンドボタンがクリックされたときに実行される処理の始まりと終わりを示します。
"Private"とは、この処理が現在作成している処理の中だけで通用するものであることを示します。今の段階ではあまり意識することはないので、詳しくは回を追って説明することにしましょう。
"Sub"とは、一定の意味を持つ処理を示す記号です。VBでは、プログラムは「プロシージャ」と呼ばれる処理単位で構成され、このようにSubで始まる処理は「Subプロシージャ」と呼ばれます。
"Command1_Click"は、このSubプロシージャの名前です。"Command1"はコマンドボタンの名前で、"Click"は文字どおり「クリック」を示しています。つまりこの1行で"Command1"という名前のオブジェクトがクリックされたときに実行されるSubプロシージャの始まりを示しているのです。
"End Sub"は、読んで字のごとく「Subプロシージャの終わり」を示します。



- イベントプロシージャ -

Windowsアプリケーションはイベント駆動型のアプリケーションであることを、既に説明しました。プログラムを実行してユーザーがこのコマンドボタン"Command1"(切り替え)をクリックしたら、Windowsからアプリケーションに対して「コマンドボタン"Command1"がクリックされた」というメッセージが送られてきます※2。
すると、そのメッセージに対応する"Private Sub Command1_Click()"というプロシージャが実行され、中に書かれたプログラムによってラベルの文字列が書き換えられるのです。
この"Private Sub Command1_Click()"のように、あるイベント(の発生によって送られてきたメッセージ)に対応して実行されるプロシージャを「イベント・プロシージャ」と言います。
VBのプログラムは、イベントプロシージャの集まりであると捉えておきましょう。ユーザーが何か操作をしたら、それに応えてイベントプロシージャが実行され、何らかの処理が行なわれる――という構造です。

※2:実際には、Windowsが直接アプリケーションに対してコマンドボタンの名前などを知らせてくる訳ではありません。もっと複雑なメカニズムが働いているのですが、今の段階では気にする必要はありません。それより、概略的なイメージで動作のメカニズムを大まかに把握しておいてください。



プログラムを書き換える

先のアプリケーションでは、一旦コマンドボタンをクリックして表示が切り替わったら、後は何の変化もありませんでした。今度はコマンドボタンをもう1つ追加し、それがクリックされたら「元の表示に戻る」ようにしてみましょう。


- フォームのデザイン -

実際に試す場合は、元のプロジェクトを直接書き換えて構いません。以前のソースを残しておきたい人は、関連するファイルをすべて別のフォルダにコピーしておけばいいでしょう。
フォームのデザインは画面1のようになります。Captionプロパティには、"元に戻す"という文字列を設定しておきましょう。

画面1:コマンドボタンを追加してCaptionプロパティを書き換える


- コードの入力 -

このコマンドボタンをダブルクリックしてコードウィンドウをオープンさせると、先に入力したソースコードも表示されます。それぞれ、以下のように書き換えてみましょう。
下の"Private Sub Command2_Click()"が、後から追加したコマンドボタン(Command2)のクリックに対応するイベントプロシージャです。


Private Sub Command1_Click()
  Label1.Caption = "Enjoy Programming!!"
  Label1.ForeColor = vbMagenta  ←ここを書き直す
End Sub

Private Sub Command2_Click()
  Label1.Caption = "Welcome to the VB World !"
  Label1.ForeColor = vbBlue ←↑この2行を追加する
End Sub


- 動作を試す -

これでメニューから「実行(R)」→「開始(S)」でアプリケーションを実行させてみましょう。[切り替え]ボタンをクリックすれば"Enjoy Programming!!"と赤紫で表示されるところまでは、前回作ったものと同じです。
ここで[元に戻す]ボタンをクリックすると、ラベルの表示が"Welcome to the VB World !"となり、色も青に切り替わって、最初に表示されていた状態に戻ります。
この動作の仕組みは、もうお分かりですね。[元に戻す]ボタン(Command2)がクリックされたときに実行されるイベントプロシージャ"Private Sub Command2_Click()"の中のソースを見て、その意味を読み取っておきましょう。


DownloadVBプロジェクトファイルのダウンロード(23.2KB)
Copyright © MESCIUS inc. All rights reserved.