Form_Loadイベント実行中にForm起動を解除したい

解決


ラッパ  2005-11-08 10:04:38  No: 127421

こんばんわです。ラッパです。
どなたか知ってたら教えてください。
もしくは、ヒントをいただけるとうれしいです。

Form起動のイベント(Form_Load)実行中に、Form起動を
キャンセルしたいのですが、そんなことってできるんですか?

現状、エラーが発生しても、メッセージを表示して、
とりあえず、起動させています。
その後、ユーザーが何かしようとしたときに、エラーではじくようにしています。

皆さんは、その辺、どうされているのですか?

開発環境は、VB6です。
よろしくお願いします。


じゃんぬねっと  URL  2005-11-08 10:45:33  No: 127422

> 皆さんは、その辺、どうされているのですか?

メイン フォーム表示前に何らかのチェックがあるのですよね。
普通は、エントリ ポイントを使います。

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


いな  2005-11-08 17:26:50  No: 127423

大概の場合はSub Main関数などを
つかいますが、
同様にロードイベント内で抑制するのではなく
ロードイベントが走らないようコーディングするのが
一般的では?


もげ  2005-11-08 18:23:42  No: 127424

もっと単純ですが、
エラーが出たら、
Unload Me
ではダメですか?


GOD  2005-11-08 18:29:40  No: 127425

私は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


通ってみた  2005-11-08 18:35:05  No: 127426

自分はForm_Loadの時だけはEndで終わらせます
理由:Quality_Unloadで余計な処理させたくないから


ラッパ  2005-11-09 09:20:46  No: 127427

こんばんわ。
皆さん、色々創意工夫があるのですね!

勉強になりました。

今回は、「通ってみた」さんのENDで対応しようと思います。
(つーか、ENDって初めて知りました。。。)

確かに、STEP実行してみたら、UNLOADのイベントが発生しないんですね!

勉強になるです。
はい。


通ってみた  2005-11-09 11:27:39  No: 127428

注意事項として、Endで終わらせると強制終了扱いなので、メモリを確保するような設定をした後にEndさせてしまうとメモリリークします
ので、できるだけコードの最初の方でできるだけ何も設定していない状態でEndさせてください


勉強中  2005-11-11 01:06:12  No: 127429

解決したあとで失礼します。
拝見していてメモリーリークというものがあることを知りMSDNを見ました。これを回避するには安全をみてENDの前に開いている他のフォームのアンロードと現在のフォームで使っている画像やクリップボードなどを空にする必要があるのでしょうか。皆様の工夫を教えてください。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加