こんばんわです。ラッパです。
どなたか知ってたら教えてください。
もしくは、ヒントをいただけるとうれしいです。
Form起動のイベント(Form_Load)実行中に、Form起動を
キャンセルしたいのですが、そんなことってできるんですか?
現状、エラーが発生しても、メッセージを表示して、
とりあえず、起動させています。
その後、ユーザーが何かしようとしたときに、エラーではじくようにしています。
皆さんは、その辺、どうされているのですか?
開発環境は、VB6です。
よろしくお願いします。
> 皆さんは、その辺、どうされているのですか?
メイン フォーム表示前に何らかのチェックがあるのですよね。
普通は、エントリ ポイントを使います。
Public Sub Main()
If IsExecute() = True Then
Dim oForm As FormMain
Set oForm = New FormMain
Call Load(oForm)
Call oForm.Show(vbModal)
End If
End Sub
大概の場合はSub Main関数などを
つかいますが、
同様にロードイベント内で抑制するのではなく
ロードイベントが走らないようコーディングするのが
一般的では?
もっと単純ですが、
エラーが出たら、
Unload Me
ではダメですか?
私はShow用の自作関数作って対応してますよ。
用途としてはDBからデータ読み込んできた時に表示データがない場合にメッセ
ージボックスを表示してフォームを表示しないとかで使用してますが。
Private mblnInit As Boolean
Private Sub Form_Load()
'処理
' :
'初期化失敗? Or データなし
If 〜 Then
Exit Sub
End If
' :
mblnInit = True
End Sub
Public Function ShowModeless(Optional objOwner As Form = Nothing) As Boolean
mblnInit = False
Load Me
If mblnInit Then
Me.Show vbModeless, objOwner
Else
Unload Me
End If
ShowModeless = mblnInit
End Function
自分はForm_Loadの時だけはEndで終わらせます
理由:Quality_Unloadで余計な処理させたくないから
こんばんわ。
皆さん、色々創意工夫があるのですね!
勉強になりました。
今回は、「通ってみた」さんのENDで対応しようと思います。
(つーか、ENDって初めて知りました。。。)
確かに、STEP実行してみたら、UNLOADのイベントが発生しないんですね!
勉強になるです。
はい。
注意事項として、Endで終わらせると強制終了扱いなので、メモリを確保するような設定をした後にEndさせてしまうとメモリリークします
ので、できるだけコードの最初の方でできるだけ何も設定していない状態でEndさせてください
解決したあとで失礼します。
拝見していてメモリーリークというものがあることを知りMSDNを見ました。これを回避するには安全をみてENDの前に開いている他のフォームのアンロードと現在のフォームで使っている画像やクリップボードなどを空にする必要があるのでしょうか。皆様の工夫を教えてください。
ツイート | ![]() |