1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1...

21
1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー ツールボックス プロジェクトウィンドウ プロパティウィンドウ フォームレイアウトウィンドウ

Transcript of 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1...

Page 1: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

1章 Visual Basic の基礎知識

1.1 各部の名称と基本操作

プロジェクトウィンドウ

メニューバー

フォーム

ツールバー

ツールボックス

プロジェクトウィンドウ

プロパティウィンドウ

フォームレイアウトウィンドウ

Page 2: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

演習

1)以下のようにコントロールを配置し、終了ボタンを押すとプログラムが終了でき

るようにする。

終了ボタンをダブルクリックするとプログラム画面が表示されるので、以下のように

終了命令 End を書き加える。

Private Sub Command1_Click()

End

End Sub

2)このプログラムを vb1.frm, vb1.vbp の名前で保存する。

フォームの情報(プログラムを含む)は vb1.frm(フォームファイル)に、フォー

ム間の関係は vb1.vbp(プロジェクトファイル)に書かれる。

Page 3: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

1.2 コントロールの名前とプロパティ

終了ボタンでプログラムが終了し、表示ボタンで上の名前の部分を利用して下図の

ように表示するプログラムを作る。

1)画面の色を変える。

フォームと2つのラベルの BackColor を白色に変える。

2)文字のサイズ等を変える。

 名前確認のラベルのフォントのサイズを 14 ポイントにし、ForeColor プロパティを

赤に変える。表示用テキストボックスのフォントのサイズ、文字飾り、色を好みで変

える。

3)コントロール名を分かりやすく変える。

終了ボタンのオブジェクト名を owari、表示ボタンのオブジェクト名を hyoji、名前

を書き込むテキストボックスのオブジェクト名を namae、結果が表示されるテキストボ

ックスのオブジェクト名を kekka に変える。

Page 4: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

4)プログラムを記述する。

終了ボタンをダブルクリックし、プログラムを書き込む。

Private Sub owari_Click()

End

End Sub

 表示ボタンをダブルクリックし、プログラムを追加する。

Private Sub hyoji_Click()

kekka.Text = "あなたは" & namae.Text & "さんですね。"

End Sub

5)このプログラムを vb2.frm, vb2.vbp の名前で保存する。

フォームの情報(プログラムを含む)は vb2.frm(フォームファイル)に、フォー

ム間の関係は vb2.vbp(プロジェクトファイル)に書かれる。

問題

 以下のようにテキストボックスに趣味を「××」と入力し、確認ボタンを押すと、

下に「××が好きなんですか。」と表示されるプログラムを作れ。但し、終了ボタンで

終了すること。プログラムは vbex2.frm と vbex2.vbp に保存する。

Page 5: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

演習問題 2.1

 以下の図のように、文字列1と文字列2のテキストボックスに適当に文字列を打ち

込み、実行ボタンをクリックすると、下のラベルに2つの文字列をつないで表示する

プログラムを作れ。また、クリアボタンをクリックすると左側のテキストボックスが

クリアされるようにせよ。但し、空欄は2つの「”」を続けて、「””」(ヌル文字列と

いう)で表わされる。結果は、vbex2b.frm と vbex2b.vbp に保存せよ。

演習問題 2.2

コピー元のテキストボックスに文字列を打ち込むと、同時にコピー先のテキストボ

ックスにもその文字列が表示されるプログラムを作れ。結果は、vbex2c.frm と

vbex2c.vbp に保存せよ。

ヒント:コピー元のテキストボックスをダブルクリックして、内容が変化(change)す

るとコピー先にコピー元の文字列を入れるようにする。

Page 6: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

1.3 オプションボタン

色の設定フレーム中のオプションボタンで、文字色が変わるプログラムを作る。

1)ラベル、コマンドボタン、フレーム、オプションボタンを貼り付ける。その際、

フレームを貼り付けた上に、オプションボタンを貼り付ける。

2)コントロールの caption を上の図のように変える(ラベルの部分は自分の名前)。

3)コントロールの名前(オブジェクト名)を変える。

ラベル:namae コマンドボタン:owari

オプションボタン:blue, green, red

4)name の文字色を青色、blue ボタンの Value プロパティを True にしておく。

5)それぞれのコントロールをダブルクリックして、以下のプログラムを書き込む。

Private Sub owari_Click()

End

End Sub

Private Sub blue_Click()

namae.ForeColor = QBColor(9)

End Sub

Private Sub green_Click()

namae.ForeColor = QBColor(10)

End Sub

Private Sub red_Click()

namae.ForeColor = QBColor(12)

End Sub

6)結果は vb3.frm と vb3.vbp に保存する。

Page 7: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

問題

以下のように、オプションボタンを指定して、設定ボタンを押すと文字の色が変わ

るプログラムを作れ。

但し、設定ボタンをクリックした場合のプログラムは、以下のようになる。[ ] の中

を埋めて完成させよ。

If blue.Value = True Then

[ ]

ElseIf [ ] Then

namae.ForeColor = QBColor(10)

Else

[ ]

End If

結果は vbex3.frm と vbex3.vbp に保存する。

一般に、条件によって処理を分ける場合は、以下のような書式にする。

If 条件1 Then

処理1

ElseIf 条件2 Then

処理2

Else

処理3

End If

注)ElseIf を間違えて Elself としない。

Page 8: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

1.4 チェックボックス

「スタイル」フレーム中のチェックボックスで、文字のスタイルが変わるプログラ

ムを作る。

1)ラベル、コマンドボタン、フレーム、チェックボックスを貼り付ける。その際、

フレームを指定した上に、チェックボックスを貼り付ける。

2)コントロールの caption を上の図のように変える(ラベルの部分は自分の名前)。

3)コントロールの名前(オブジェクト名)を変える。

ラベル:namae コマンドボタン:owari

チェックボックス:Check1, Check2, Check3(元々この名前になる)

4)それぞれのコントロールをダブルクリックして、以下のプログラムを書き込む。

Private Sub Check1_Click()

If Check1.Value = 1 Then

namae.FontBold = True

Else

namae.FontBold = False

End If

End Sub

Private Sub Check2_Click()

If Check2.Value = 1 Then

namae.FontItalic = True

Else

namae.FontItalic = False

End If

End Sub

Page 9: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

Private Sub Check3_Click()

If Check3.Value = 1 Then

namae.FontUnderline = True

Else

namae.FontUnderline = False

End If

End Sub

Private Sub owari_Click()

End

End Sub

5)結果は vb4.frm と vb4.vbp に保存する。

問題

以下のように、チェックボックスを指定して、設定ボタンを押すと文字のスタイル

が変わるプログラムを作れ。(ヒントなし)

結果は vbex4.frm と vbex4.vbp に保存する。

Page 10: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

1.5 イメージコントロール

イメージコントロールに貼り付けたパンダの絵が、「大きく」ボタンで拡大、「小さ

く」ボタンで縮小するようなプログラムを作る。

1)自分のマイドキュメントに、panda.gif と tanuki.gif をコピーしておく。

2)イメージコントロールの Picture プロパティで panda.gif ファイルを指定し、パ

ンダの絵を貼り付ける。3つのコマンドボタンを貼り付け、上のようにしておく。

3)各コントロールに名前を付ける。

イメージコントロール:Panda

コマンドボタン 終了:owari,大きく:large,小さく:small

4)Panda の Strech プロパティを True にする。

5)3つのボタンと下地のフォームをダブルクリックして、以下のプログラムを書く。

Private Sub owari_Click()

End

End Sub

Private Sub large_Click()

Panda.Height = Panda.Height + 500

Panda.Width = Panda.Width + 500

End Sub

Private Sub small_Click()

If Panda.Height - 500 > 0 Then

Panda.Height = Panda.Height - 500

End If

If Panda.Width - 500 > 0 Then

Panda.Width = Panda.Width - 500

End If

End Sub

Page 11: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

Private Sub Form_Load()

Panda.Left = 0

Panda.Top = 0

Panda.Height = 1500

Panda.Width = 1500

Panda.Visible = True

End Sub

ここで、Form_Load()の中は、プロパティウィンドウで設定しておいても良い。

問題

 例題のプログラムを改良して、「パンダ」をクリックすると以下のような「たぬき」

に変わり、「たぬき」をクリックすると「パンダ」に戻るプログラムを作れ。もちろん

この「たぬき」も拡大・縮小するものとする。

ヒント

1)2つのイメージコントロール Panda と Tanuki を用意し、最初は Panda の Visible

を True、Tanuki の Visible を False にしておき、クリックがあるごとに切り替え

る。

2)Panda と Tanuki は同じように拡大・縮小させておく。

Page 12: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

1.6 タイマーコントロール

イメージコントロールに貼り付けたインコの絵がタイマーイベントによって、右に

動いていくプログラムを作る。但し、右端に到達するとまた左端から現われるように

する。

  

1)自分のマイドキュメントに、inko1.gif と inko2.gif をコピーしておく。

2)タイマーコントロールを貼り付け、interval プロパティを 100(0.1 秒)にする。

3)2つのイメージコントロールを用意して、一方を空にして、一方の picture プロ

パティに inko1.gif を貼り付ける。

4)2つのコマンドボタンを上の図のように設定する。

5)各コントロールに名前を付ける。

タイマーコントロール:Timer1(デフォルト)

イメージコントロール 空の方:inko,絵の入っている方:inko1

コマンドボタン Go!:cmdGo, Stop:cmdStop

6)2つのコマンドボタン、下地のフォーム、タイマーコントロールをダブルクリッ

クして、以下のプログラムを書く。但し、最初の Dim speed は、グローバル変数

(プログラム中どこでも利用・変更可能な変数)の定義。しかし使用はできるだ

け控えること。

Dim speed

Private Sub cmdGo_Click()

Timer1.Enabled = True

End Sub

Private Sub cmdStop_Click()

Timer1.Enabled = False

End Sub

Page 13: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

Private Sub Form_Load()

inko1.Visible = False

inko.Left = 0

inko.Top = 1500

inko.Height = 1000

inko.Width = 1000

inko.Picture = inko1.Picture

speed = 100

Timer1.Enabled = False

End Sub

Private Sub Timer1_Timer()

inko.Left = inko.Left + speed

If inko.Left > ScaleWidth Then

inko.Left = -1000

End If

End Sub

7)プログラムは vb6.frm と vb6.vbp で保存する。

ここで、変数 speed の設定を除いて、Form_Load()の中は、プロパティウィンドウで設

定しておいても良い。また、Scalewidth はフォームの内側の幅。Speed 変数は使う必

要はないが次の問題の準備として。

問題

例題のプログラムを改良して、インコが左右の壁にぶつかると反対向きに動き出す

プログラムをつくれ。プログラムは vbex6.frm と vbex6.vbp で保存する。

  

ヒント

1つの空のイメージコントロール inko と2つのイメージコントロール inko1 と

inko2 を用意し、壁にぶつかるごとに交替で inko に絵を貼り付ける。その際、speed

変数も+100 と-100 を入れ換える。

Page 14: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

1.7 タイマーコントロールその2

Start ボタンを押すとイメージコントロールに貼り付けた蚊が飛びまわり、それをマ

ウスでクリックして退治するプログラムを作る。

1)自分のマイドキュメントに、ka1.gif, ka2.gif, senkou.gif をコピーしておく。

2)タイマーコントロールを貼り付け、interval プロパティを 100(0.1 秒)にする。

3)4つのイメージコントロールを用意して、1つを空にして、3つの picture プロ

パティに ka1.gif, ka2.gif, senkou.gif(大きい)を貼り付ける。

4)コマンドボタンを貼り付け、各コントロールに名前を付ける。

タイマーコントロール:Timer1(デフォルト)

イメージコントロール 空の方:ka,絵の入っている方:ka1, ka2(赤い方)

コマンドボタン Start:cmdStart

5)下地のフォーム、コマンドボタン、イメージコントロール ka、タイマーコントロ

ールをダブルクリックして、以下のプログラムを書く。

Dim no

Dim sx: Dim sy

Private Sub cmdStart_Click()

no = 0

Timer1.Enabled = True

ka.Picture = ka1.Picture

End Sub

Private Sub Form_Load()

ka1.Visible = False

ka2.Visible = False

sx = 100: sy = 100

Timer1.Enabled = False

End Sub

Page 15: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

Private Sub ka_Click()

ka.Picture = ka2.Picture

Timer1.Enabled = False

End Sub

Private Sub Timer1_Timer()

If ka.Left > ScaleWidth - ka.Width Then sx = -100

If ka.Left < 0 Then sx = 100

If ka.Top > ScaleHeight - ka.Height Then sy = -100

If ka.Top < 0 Then sy = 100

ka.Left = ka.Left + sx + (Rnd - 0.5) * 300

ka.Top = ka.Top + sy + (Rnd - 0.5) * 300

no = no + 1

If no = 100 Then

Timer1.Enabled = False

End If

End Sub

6)プログラムは vb7.frm と vb7.vbp で保存する。

問題

例題のプログラムを改造して、蚊は退治された後1秒してまた動き出し、退治した

数が右上に表示されるゲームらしいプログラムを作れ。プログラムは vbex7.frm と

vbex7.vbp で保存する。

ヒント

1)新たに Timer2(Interval は 1000)とラベル counter を貼り付ける。

2)変数 score を定義し、蚊をクリックするごとに score=score+1 で数を増やし、

counter.Caption に値を書き込む。

3)蚊をクリックすると、Timer1 の Enabled を False に、Timer2 を True にする。

4)Timer2 のイベントが発生すると(1秒後)、蚊の絵を元に戻し、Timer2 を False

に Timer1 を True にする(動き出す状態)。

Page 16: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

演習問題 7.1

 以下の図のように、4つのイメージコントロールのうちの3つに robot1.gif,

robot2.gif, robot3.gif を読み込み、タイマーイベントに合わせて、もう1つのイメ

ージコントロールに順番に絵を貼り付けて、ロボットが体操をしているようなプログ

ラムを作れ。但し、順番にイチ、ニィ、サンと元気良く声を出しているようにする。

プログラムは vbex7b.frm と vbex7b.vbp に保存する。

ヒント

If [ ] Then

robot.Picture = robot2.Picture

[ ].Caption = "ニィ"

ElseIf robot.Picture = robot2.Picture Then

[ ]

[ ]

Else

[ ]

[ ]

End If

Page 17: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

演習問題 7.2

 以下の図のように、4つのイメージコントロールのうちの3つに cat1.gif,

cat2.gif, cat3.gif を読み込み、寝転んでいるネコが5秒後に居眠りを始めるプログ

ラムを作れ。但し、居眠りをしているとき、マウスでクリックすると cat3.gif のよう

に怒り、しばらくしたらまた寝転んで居眠りを始めるものとする。プログラムは

vbex7c.frm と vbex7c.vbp に保存する。

注)もちろんうまくプログラムすれば、タイマーコントロールは1つでも可能である。

Page 18: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

1.8 グラフィックスメソッド

 フォームやピクチャーボックスには、簡単な描画も可能です。ここでは、この機能

について学習します。基本的には、コントロール名.命令 引数 という形で利用しま

すが、フォームを画面として描く場合は、コントロール名を省略できます。

主な命令

Cls 画面を消去します。

PSet (x,y),色  画面に点を打つ。

Line(x1,y1)-(x2,y2),色[,b(bf)] 2点を結んで線を引く(b:四角 BF:塗りつぶし)

Circle(x,y),半径,色[,開始位置,終了位置,縦横比]

      開始位置と終了位置はラジアン表示,半径を描くならマイナスを付ける。

色の指定:QBColor(0)~QBColor(15), RGB(赤,緑,青) 各色 0~255

DrawStyle = 0:実線(既定値) 1:鎖線 2:点線 3:1点鎖線 4:2点鎖線

DrawWidth = 線の太さ

FillStyle = 0:塗りつぶし 1:透明(既定値) 2:横線 3:縦線 4:斜線(左上右下)

5:斜線(右上左下) 6:クロス(縦横) 7:網掛け(斜め)

FillColor = 色

1)フォームを ScaleHeight=6000, ScaleWidth=8000 程度の大きさになるよう調整し、

BackColor プロパティを白色にする。また、AutoRedraw プロパティを True にする。

3)Form の Resize イベントの中に、以下のプログラムを書く。これによって動き出し

たらすぐ表示される。

4)プログラムは、vb8.frm と vb8.vbp で保存する。

Page 19: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

Private Sub Form_Resize()

pi = 3.1415926

DrawStyle = 0

DrawWidth = 1

FillStyle = 1

FillColor = QBColor(0)

Cls

PSet (500, 500), QBColor(0)

Line (1000, 1000)-(2000, 2000), QBColor(0)

Line (2500, 1000)-(3500, 2000), QBColor(9), B

Line (4000, 1000)-(5000, 2000), QBColor(10), BF

Circle (1000, 3000), 500, QBColor(11)

Circle (2500, 3000), 500, QBColor(12), pi, 0

Circle (4000, 3000), 500, QBColor(12), 0, pi

Circle (5500, 3000), 500, QBColor(13), , , 0.5

Circle (7000, 3000), 500, QBColor(13), , , 2

DrawStyle = 2

Circle (1000, 4500), 500, QBColor(1)

DrawStyle = 0

DrawWidth = 3

Circle (2500, 4500), 500, QBColor(2)

FillStyle = 0

FillColor = RGB(0, 255, 0)

Circle (4000, 4500), 500, RGB(0, 0, 255)

Circle (5500, 4500), 500, RGB(255, 0, 0), -1.5 * pi, -0.5 * pi, 0.5

CurrentX = 5500

CurrentY = 1500

Print "グラフィックスの練習"

End Sub

問題

 プログラムを動かすと以下のような絵を描くプログラムを作れ。プログラムは

vbex8.frm, vbex8.vbp に保存せよ。

Page 20: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

1.9 グラフィックスで楽しもう

 フォームやピクチャーボックスには、簡単な描画も可能です。ここでは、この機能

について学習します。基本的には、コントロール名.命令 引数 という形で利用しま

すが、フォームを画面として描く場合は、コントロール名を省略できます。

主な命令

Cls 画面を消去します。

PSet (x,y),色  画面に点を打つ。

Line(x1,y1)-(x2,y2),色[,b(bf)] 2点を結んで線を引く(b:四角 BF:塗りつぶし)

Circle(x,y),半径,色[,開始位置,終了位置,縦横比]

      開始位置と終了位置はラジアン表示,半径を描くならマイナスを付ける。

色の指定:QBColor(0)~QBColor(15), RGB(赤,緑,青) 各色 0~255

DrawStyle = 0:実線(既定値) 1:鎖線 2:点線 3:1点鎖線 4:2点鎖線

DrawWidth = 線の太さ

FillStyle = 0:塗りつぶし 1:透明(既定値) 2:横線 3:縦線 4:斜線(左上右下)

5:斜線(右上左下) 6:クロス(縦横) 7:網掛け(斜め)

FillColor = 色

問題

 夏休みまでに夏をテーマに1枚絵を仕上げましょう。データはホームページなんか

から取ってきてもいいです。

ヒントプログラム

Dim no

Dim sx, sy

Private Sub Form_Resize()

'星空を描く (0,0)-(8000,6000)の領域に白色の点を 1000 個描く。

'砂浜にも応用可能

X1 = 0: Y1 = 0

X2 = 8000: Y2 = 6000

For i = 1 To 1000

x = X1 + (X2 - X1) * Rnd

y = Y1 + (Y2 - Y1) * Rnd

PSet (x, y), QBColor(15)

Next i

Page 21: 1章 Visual Basic の基礎知識1章 Visual Basic の基礎知識 1.1 各部の名称と基本操作 プロジェクトウィンドウ メニューバー フォーム ツールバー

'月を描く

FillStyle = 0

FillColor = QBColor(14)

Circle (7000, 1000), 500, QBColor(14)

'流れ星準備

no = 0

sx = 300

sy = 300

Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()

'3 秒後に流れ星

If no = 30 Then

star.Visible = True

ElseIf no > 30 And no < 40 Then

star.Move star.Left + sx, star.Top + sy

ElseIf no = 40 Then

star.Visible = False

Timer1.Enabled = False

End If

no = no + 1

End Sub