まったくの初歩的な質問ですみません。
VB6で、Form1.Show 0 にて Form1を開いています。
Form1 は、
Private Sub Form_Load()
データを読み込み --- ①
その計算 --- ②
結果を List1 に表示 --- ③
End Sub
Private Sub Command1_Click()
Unload Form1
End Sub
と言った内容です。
不思議なのは、何故か、①・② が終了して初めて、リストボックスとコマン
ドボタン の表示、そして同時に ③ となります。
本当は、フォームを開いた時点で、即、リストボックスとコマンドボタンを表示
し、①・② を実行した結果を順番にその都度 ③ の表示をしたいのです。
何か、基本的に間違っているのでしょうか。
教えてください。お願いします。
Loadイベントは表示される前のイベントだからだと思いますよ。
あえて、Showメソッドを実行してみるとか…。
Private Sub Form_Load()
Me.Show vbModeless
データを読み込み
その計算
結果を List1 に表示
End Sub
KGさん、まさやんさん ありがとうございました。
KGさん、Loadイベントは表示される前のイベントとは知りませんでした。
確かに、前段でコマンドボタンで受けますと解決はします。
まさやんさん、実行してみましたが残念ながら変化はありませんでした。
メニューから、Form1を直に開き実行したいのです。
この様な使い方は、よく有ると思うのですがそれ以上はよく分かりません。
他に何か方法が有りましたらよろしくお願いします。
Form1のTimerイベントにコードを記述すると幸せになれるかもしれません
当然イベント内でTimerのEnableをFalseにすることをお忘れなく
Showメソッドの次に、DoEventsを入れるか…ですね。
Load時の処理が重いのが原因かと思われます。
後は、FormのActivateイベントを使うのも一つの手かもしれません。
通ってみたさん、まさやんさん ありがとうございました。
教えて頂いたTimerイベントで解決しました。
Timerで時間を稼がなければならないとは思ってもいませんでした。
DoEventsとActivateも試しましたが今回はうまくいかない様でした。
お教え頂いた皆さん、本当にありがとうございました。
>Load時の処理が重いのが原因かと思われます。
どんなにLoadイベント内の処理が軽くてもLoadイベント中にフォームは表示されません
KGさんも仰ってますが、Loadイベントを抜けてはじめてフォームが表示されるからです
通ってみたさん ありがとうございました。
その後、順調に動いています。
まだまだ、分からないことばかりですので今後ともよろしくお願いします。
ツイート | ![]() |