§1 テキストエディタの制作 VB6
 (2) 実行時のウィンドウサイズと終了処理 前へ 目次へ 次へ 

 1. 実行時のプロパティ設定

 実行時やウィンドウサイズが変更されたときにテキストボックスがフォームいっぱいに広がるようにする。そのためには、プログラムでプロパティを設定する。
 ウィンドウのサイズが変更されると、FormオブジェクトのResizeイベントが発生し、Form_Resizeプロシージャが実行される。

Private Sub Form_Resize()
    Text1.Height = Form1.ScaleHeight    'テキストの高さをフォームの高さに合わせる。
    Text1.Width = Form1.ScaleWidth      'テキストの幅をフォームの幅に合わせる。
End Sub

 また、テキストボックスはウィンドウの一番左上に配置したいので、TopLeftプロパティを0に設定する。これは最初の一度だけで良いのでForm_Loadプロシージャにプログラムする。Form_Loadは、C言語のmain関数と同じように最初に実行されるプロシージャである。

Private Sub Form_Load()
'実行時の最初に一度だけ処理される。
    Text1.Top = 0
    Text1.Left = 0
End Sub


=== ポイント ===
 ウィンドウサイズが変更されるとResizeイベントが発生する。すなわち、Form_Resizeプロシージャが実行される。


 2. Boolean型変数の利用

 エディタ実行時に、メニューから終了(X)を選択するとmnuEndオブジェクトのClickイベントが発生し、mnuEnd_Clickプロシージャが実行されるので、このプロシージャに終了のための命令を書く。

Private Sub mnuEnd_Click()
    Unload Me
End Sub

 テキストを編集(変更)した後、保存しないで終了しようとしたときに「テキストが変更されています。保存しないで終了しますか。」のように確認のメッセージが出せるようにする。
 テキストが変更されたかどうかを示す変数Henkouを用意する。この変数は、すべてのプロシージャから参照ができるようにプロシージャ外で、すなわちグローバル変数として宣言する。
 また、この変数Henkouは、「テキスト変更あり=True」と「テキスト変更なし=False」の2つの状態だけが判定できれば良い。逆に、この2つの状態以外の値が記憶できない方が良い。例えば、Integer型で宣言し、変更あり=1、変更なし=0としても良いが0,1以外の値になってしまう可能性がある。ここでは、True(真)とFalse(偽)のどちらかのみを値として持つBoolean型で変数を宣言する。

 変数Henkouの宣言 ((General)オブジェクト,(Declarations)プロシージャで宣言する。図1-2-1参照。)

Dim Henkou As Boolean
図1-2-1

 変数Henkouの初期値として、False(変更なし)を設定したいので、Form_Loadプロシージャに次の命令(青色部分)を追加する。

Private Sub Form_Load()
'実行時の最初に一度だけ処理される。
    Text1.Top = 0
    Text1.Left = 0
    Henkou = False
End Sub

 終了確認と終了は、Form_QueryUnloadプロシージャで行う。これは、コントロールボックスの"閉じる"ボタンで終了したときにも対応するためである(「(8)終了確認」参照)。

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Dim yn As VbMsgBoxResult

    If Henkou = True Then        'テキスト変更あり
        yn = MsgBox("まだ保存されていません。終了しますか。", vbYesNo, "終了確認")
        If yn = vbNo Then
            Text1.SetFocus
            Cancel = True        'Trueでフォームはアンロードされない。
            Exit Sub
        End If
    End If
    End
End Sub

 テキストボックスの内容が変更される、すなわち、文字が挿入されたり削除されたりするとText1_Changeプロシージャが実行(呼び出し)される。

Private Sub Text1_Change()
    Henkou = True        'テキストが変更された
End Sub

 実行して、テキストボックスに文字を適当に入力する。この後、終了すると「まだ保存されていません。終了しますか。」という確認のメッセージが表示される。ここで、「はい」と「いいえ」、それぞれ選んで動作を確認する。


=== ポイント ===
 Boolean型の変数は、値として "True" と "False" のどちらかを持つ。


 (2) 実行時のウィンドウサイズと終了処理 前へ 目次へ 次へ 
Copyright © 2001,2002 Hiroshi Masuda 

 

 

inserted by FC2 system