環境はVB6です。
フォームがあり、このフォームはモーダル状態で開かれています。
フォームロードに時間が掛かる処理を書いていて、フォームが表示されるまでに
時間が掛かります。その為、先にフォームを表示させてお待ちくださいなどの
メッセージを書いたフレームなどを中央におこうと考えています。
今まではフォームロードのはじめのほうにMe.Showなど書いて先に表示させてましたが、
このフォームはモーダル状態で開かれているためできません。
なので、フォームが表示された後に一度だけ処理をしたいのですがこういった場合
はどのイベントに記述するのが適当でしょうか?
よろしくお願いします。
1:「時間が掛かる処理」というものをForm_Loadに書かないで他に書く
2:Timerを仕掛けて1を処理させる
3:Timerが作動したら、TimerのEnabled=Falseにする
とか?
これならフォームは表示されるはず
ありがとうございます。
Timerコントロールを使えば可能ですがもっとスマートに出来る方法はないでしょうか?
よろしくお願いします。
どんなコードが貴方の言う「スマート」なのか教えてください
ダイアログのフォームのActiveイベントに
Private Sub Form_Activate()
Me.Refresh
'長い処理
End Sub
とか
長い処理を行うときフォームが表示されて無応答になると
アプリケーションがハングしたのかと勘違いするので
DoEventsとかをいれてプログレスバー等で進捗状況を表示する方が
良いでしょう。
スマートには
・コード(プログラム)がスマートな場合
・動作(仕様)がスマートな場合
2種類あり、
後者の場合、スマートな仕様を実装する為には多少
コードの方はがんばらないとね。
>どんなコードが貴方の言う「スマート」なのか教えてください
Hogeさんのような感じ
Hogeさん ありがとうございます。
Form_Activate()に処理を書くようにしました。
ここに処理を書くと何回も実行されてしまうので、Form_Load()の最後にフラグを
立てて処理するようにして、うまくいきました。
ありがとうございました。
ツイート | ![]() |