起動時にForm1にあるチェックボックスがONのときForm2を同時に表示させようと
思っているのですが、なかなかうまくできません。
if CheckBox1.Checked = True then Form2.Show;
をForm1のOnCreateに書いてみましたがエラーになってしまいます。
すごく簡単な事で躓いてしまってお恥ずかしいです。
どなたかご教授ください。
よろしくお願い致します。
OnCreateではなく、OnShowではどうですか?
そのときに何かエラーメッセージは出ませんでしたか?
恐らく何か出たと思いますが、それが解決の鍵になってくれるはずです。
にしのさんの言うとおり、OnShowに処理を移せば解決すると思いますが、
その前にちょっと考えてみてください。
なお、"$XXXXXXXXで$XXXXXXXXに対する読み込み違反…"というメッセージは、
なにか、まだ作成されていないオブジェクトや、もう破棄してしまったオブジェクトに何かをしようとしてしまった場合になることが多いです。
処理をOnShowに書いてみたところ、あっさりと解決してしまいました。
一度OnShowも自分で試してみたんですが、その時はOnCreateと同じ
デバッガの例外エラーが出ていたのですが・・・
なぜ今回うまくいったのかは分かりませんが、うまくいったので良しと
する事にします。
早々の助言、ありがとうございました。
また何かあったときよろしくお願い致します。
すでに解決済みのようですが念のため。
Form1,Form2を、自動生成するとき、Form1がメインであれば、
Form1を作成
Form2を作成
Form1を表示
となっています。
このとき、イベントの発生順は、
Form1Create
Form2Create
Form1Show
です。
Form1Createでは、Form2がCreateされていないわけですね。
Form1のOnCreateでForm2を作成すれば問題なく動くはずです。
できる限り、自動生成はメインフォームの1つだけにして、他は自前のコードで作成したほうがよいです。
破棄に関しては、たいていの場合Application任せでOKです。
ツイート | ![]() |