VBSで作ったオブジェクト指向プログラミング体感用のウインドウ操作プログラムの紹介

VBS版のＯＯＰ教材第2弾のウインドウ操作プログラムです。
VBSでIEオブジェクトを創成し、位置や配色や表示文字を操る処理を記述しています。

###### **10面のウインドウオブジェクトを表示した動作例画面(2番目のコード window_control2.vbs)**
![図6ウインドウオブジェクトの実体化例.jpg](https://qiita-image-store.s3.amazonaws.com/0/147091/a95f1f30-f751-e0bd-0805-18c78750fe99.jpeg)

---
１本は初心者体験用のインタラクティブなプログラムで、もう１本は10のウインドウオブジェクトを連続して設定し表示させ閉じるプログラムです。

---
まず次のコードは、最初の８割がウインドウオブジェクトクラスの設定で、後の方２割ほどがInputBox()関数を介してウインドウインスタンスを操る部分です。
この操る部分を自由に記述すれば、IEオブジェクトですから、ブラウザロボット的な動作をさせるように拡張することもできます。
プログラム名 window_object1.vbs

~~~
' オブジェクト指向プログラミングモデル　ウインドウクラス　window_object1.vbs
Option Explicit
Class window_class
    Private objIE
    Private namae
    Private hyoujibun
    Private tate,iro,moji

' ウインドウクラスの実体時動作
    Private Sub Class_Initialize
      namae="窓1"
      iro="lightgreen"
      Set objIE = CreateObject("InternetExplorer.Application")
      objIE.Visible = true
      objIE.Top =50
      objIE.Left = 100
      objIE.Width = 300
      objIE.Height = 200
      objIE.Navigate("about:blank")
      objIE.StatusBar = False
      objIE.ToolBar = 0
      objIE.Document.Write("<html><head><title>ウインドウ オブジェクト " & namae & "</title></head>")
      objIE.Document.Write("<body bgcolor='" & iro & "'>")
      objIE.Document.Write("<div id='div-id-1'></div><br>")
      objIE.Document.Write("<div id='div-id-2'></div><br>")
      objIE.Document.Write("<div id='div-id-3'></div><br>")
      objIE.Document.Write("</body></html>")
    End Sub

' ウインドウクラスの解放時動作
    Private Sub Class_Terminate
      MsgBox "ウインドウオブジェクト " & namae & " 解放",vbOKOnly+vbInformation,"ウインドウオブジェクト インスタンス " & namae
    End Sub

' ウインドウクラスの名称指定
    Public Sub set_namae(meisyou)
      namae = meisyou
    End Sub

' ウインドウクラスの名称獲得
    Public Function get_namae()
      get_namae = namae
    End Function

' ウインドウ内文字埋め込み
    Public Sub moji_hyouji(moji)
      objIE.Document.getElementById("div-id-1").InnerText=moji
    End Sub

' ウインドウ位置指定
    Public Sub idou(x, y)
      objIE.Left = x
      objIE.Top = y
    End Sub

' ウインドウのサイズ変更
    Public Sub henkei(w,h)
      objIE.Width=w
      objIE.Height=h
    End Sub

' 背景色指定
    Public Sub ironuri(iro)
      objIE.Document.bgColor = iro
    End Sub

' ウインドウ情報表示
    Public Sub jyouhou_hyouji()
      MsgBox "ウインドウオブジェクト " & namae & " サイズ ",vbOKOnly+vbInformation,namae & " ウインドウ 情報"
    End Sub

' ウインドウを閉じる
    Public Sub tojiru()
      objIE.Quit
    End Sub

End Class

' ---------------------------------
' |   ウインドウオブジェクトを操る    |
' ---------------------------------
Dim hyoujibun
Dim w1, w2
Dim yoko,tate,haba,takasa,iro,moji

' ウインドウ w1を実体化
hyoujibun = "ウインドウ w1を実体化" & vbCr
MsgBox hyoujibun,vbOKOnly+vbInformation,"ウインドウオブジェクト インスタンス w1"
Set w1 = new window_class

' ウインドウオブジェクト ウインドウ１に名前をセット
hyoujibun = "ウインドウオブジェクト w1 に ウインドウ１と名付ける。" & vbCr
w1.set_namae("ウインドウ１")

iro=inputbox( "背景色は （#16進数表記も可）")
w1.ironuri(iro)

moji=inputbox( "表示したい文字を打ち込んで下さい。")
w1.moji_hyouji(moji)

haba=inputbox( "横幅は？")
takasa=inputbox( "高さは？")
w1.henkei haba,takasa

yoko=inputbox( "横位置は？")
tate=inputbox( "縦位置は？")
w1.idou yoko,tate

msgbox "ウインドウを閉じます。"
w1.tojiru()

Set w1 = Nothing
~~~

---
次のプログラムが、１０個のウインドウを次々と表示し、閉じるプログラムです。
生徒にこのアニメーション的な展開を見せて、インスタンスを作り操る考え方を実感させる目的のコードです。
なお、閉じるのは１０個のウインドウの内の６個だけ指定していますので、４つ残っても正常な動作です。

プログラム名 window_control2.vbs

~~~
' オブジェクト指向プログラミングモデル　ウインドウクラス　window_wontrol2.vbs
Option Explicit
Class window_class
    Private objIE
    Private namae
    Private hyoujibun
    Private tate,iro,moji

' ウインドウクラスの実体時動作
    Private Sub Class_Initialize
      namae="窓1"
      iro="lightgreen"
      Set objIE = CreateObject("InternetExplorer.Application")
      objIE.Visible = true
      objIE.Top =50
      objIE.Left = 100
      objIE.Width = 300
      objIE.Height = 200
      objIE.Navigate("about:blank")
      objIE.StatusBar = False
      objIE.ToolBar = 0
      objIE.Document.Write("<html><head><title>ウインドウ オブジェクト " & namae & "</title></head>")
      objIE.Document.Write("<body bgcolor='" & iro & "'>")
      objIE.Document.Write("<div id='div-id-1'></div><br>")
      objIE.Document.Write("<div id='div-id-2'></div><br>")
      objIE.Document.Write("<div id='div-id-3'></div><br>")
      objIE.Document.Write("</body></html>")
    End Sub

' ウインドウクラスの解放時動作
    Private Sub Class_Terminate
      MsgBox "ウインドウオブジェクト " & namae & " 解放",vbOKOnly+vbInformation,"ウインドウオブジェクト インスタンス " & namae
    End Sub

' ウインドウクラスの名称指定
    Public Sub set_namae(meisyou)
      namae = meisyou
    End Sub

' ウインドウクラスの名称獲得
    Public Function get_namae()
      get_namae = namae
    End Function

' ウインドウ内文字埋め込み
    Public Sub moji_hyouji(moji)
      objIE.Document.getElementById("div-id-1").InnerText=moji
    End Sub

' ウインドウ位置指定
    Public Sub idou(x, y)
      objIE.Left = x
      objIE.Top = y
    End Sub

' ウインドウのサイズ変更
    Public Sub henkei(w,h)
      objIE.Width=w
      objIE.Height=h
    End Sub

' 背景色指定
    Public Sub ironuri(iro)
      objIE.Document.bgColor = iro
    End Sub

' ウインドウ情報表示
    Public Sub jyouhou_hyouji()
      MsgBox "ウインドウオブジェクト " & namae & " サイズ ",vbOKOnly+vbInformation,namae & " ウインドウ 情報"
    End Sub

' ウインドウを閉じる
    Public Sub tojiru()
      objIE.Quit
    End Sub

End Class

' ---------------------------------
' |   ウインドウオブジェクトを操る    |
' ---------------------------------
Dim hyoujibun
Dim w1, w2, w3, w4, w5, w6, w7, w8, w9, w10
Dim yoko,tate,haba,takasa,iro,moji

' ウインドウ w1を実体化
hyoujibun = "ウインドウ w1を実体化" & vbCr
MsgBox hyoujibun,vbOKOnly+vbInformation,"ウインドウオブジェクト インスタンス w1"
Set w1 = new window_class

' ウインドウオブジェクト ウインドウ１に名前をセット
hyoujibun = "ウインドウオブジェクト w1 に ウインドウ１と名付ける。" & vbCr
w1.set_namae("ウインドウ１")
w1.idou 10,10
w1.moji_hyouji "草原"

Set w2 = new window_class
w2.set_namae("ウインドウ2 ")
w2.ironuri("white")
w2.moji_hyouji "電子計算機"
w2.idou 230,10

Set w3 = new window_class
w3.set_namae("ウインドウ3 ")
w3.ironuri("olive")
w3.moji_hyouji "うぐいすパン"
w3.idou 460,10

Set w4 = new window_class
w4.set_namae("ウインドウ4 ")
w4.ironuri("seagreen")
w4.moji_hyouji "サボテン"
w4.idou 690,10

Set w5 = new window_class
w5.set_namae("ウインドウ5 ")
w5.ironuri("indigo")
w5.moji_hyouji "蒼天"
w5.idou 10,250

Set w6 = new window_class
w6.set_namae("ウインドウ6 ")
w6.ironuri("purple")
w6.moji_hyouji "ラベンダー"
w6.idou 230,250

Set w7 = new window_class
w7.set_namae("ウインドウ7 ")
w7.ironuri("blue")
w7.moji_hyouji "ジーンズ"
w7.idou 460,250

Set w8 = new window_class
w8.set_namae("ウインドウ8 ")
w8.ironuri("pink")
w8.moji_hyouji "桜の花"
w8.idou 690,250

Set w9 = new window_class
w9.set_namae("ウインドウ9 ")
w9.ironuri("grey")
w9.moji_hyouji "灰色"
w9.idou 80,500

Set w10= new window_class
w10.set_namae("ウインドウ10")
w10.ironuri("yellow")
w10.moji_hyouji "卵焼き"
w10.idou 450,500

msgbox "ウインドウを閉じます。"
w1.tojiru()
w3.tojiru()
w5.tojiru()
w7.tojiru()
w9.tojiru()
w10.tojiru()

Set w1 = Nothing
Set w3 = Nothing
Set w5 = Nothing
Set w7 = Nothing
Set w9 = Nothing
Set w10 = Nothing
~~~
---

以上の２本のプログラムを配布し、後半部分を自由に書き換えさせて、インスタンスの作成とメソッドの働かせ方を指導し、オブジェクト指向プログラミングの概念を教えてきました。