[VB6] OnShowイベントの作成
VB6のではフォームを開いた瞬間を捕らえるイベントが無い。
Form_OnLoadがあるじゃ無いかと言うかもしれませんがアレは違う。
VB6でフォームを呼び出す、閉じるにはいくつかの段階がある。
1、フォームをメモリーに読み込む。
2、フォームの値を操作する。
3、フォームをディスプレイ上に表示する。
4、フォームをディスプレイ上から隠す。
5、フォームをメモリーから消す。
6、プログラムを終了する。
これらを正確にコードで書くと
Dim frmTmp As Form Set frmTmp= Form1 '・・・・1 frmTmp.Caption = "てすと中" '・・・・2 Call frmTmp.Show '・・・・3 Call frmTmp.Hide '・・・・4 Call Unload(Form1) '・・・・5
となる。
Form_Onloadイベントは 2の時に走るものであって、ディスプレイの表示された瞬間(Show実行時)に走るものではない。
ちなみにForm_Initialize は1の時、
Form_QueryUnload、Form_Unloadは4の時に走り、Form_QueryUnloadの方が先。
Form_Terminate は、プログラム終了時に呼び出される。
プログラムをしているとどうしても3の時、つまりShowの瞬間に呼び出したい関数と言うものがでてくる。
こうした場合には下記の方法を提案する。
まずフォームの対し、PrivateなBool値を用意する。(仮にBlnFlg1とする)
そして、Onloadイベント時に BlnFlg1 をFalseに設定する処理を書き、
Form_Resizeイベントの先頭に下記のコードを追加する。
If Not(BlnFlg1) Then
BlnFlg1 = True
Call 呼び出したい関数
End If
Call 呼び出したい関数 の個所は各々好きなように変更する。
関数でなくとも処理を直接書いてもよい。
Show実行時に必ずForm_Resizeイベントが実行されるのを利用した技だ。
使ってみると案外使いやすいので是非お勧めしたい。