起動時に別フォームを表示するには?

解決


Gach  2003-09-11 08:43:35  No: 4750

起動時にForm1にあるチェックボックスがONのときForm2を同時に表示させようと
思っているのですが、なかなかうまくできません。
if CheckBox1.Checked = True then Form2.Show;
をForm1のOnCreateに書いてみましたがエラーになってしまいます。

すごく簡単な事で躓いてしまってお恥ずかしいです。
どなたかご教授ください。
よろしくお願い致します。


にしの  2003-09-11 08:51:35  No: 4751

OnCreateではなく、OnShowではどうですか?


たかみちえ  URL  2003-09-11 09:04:35  No: 4752

そのときに何かエラーメッセージは出ませんでしたか?

  恐らく何か出たと思いますが、それが解決の鍵になってくれるはずです。
  にしのさんの言うとおり、OnShowに処理を移せば解決すると思いますが、
その前にちょっと考えてみてください。

  なお、"$XXXXXXXXで$XXXXXXXXに対する読み込み違反…"というメッセージは、
なにか、まだ作成されていないオブジェクトや、もう破棄してしまったオブジェクトに何かをしようとしてしまった場合になることが多いです。


Gach  2003-09-11 10:20:39  No: 4753

処理をOnShowに書いてみたところ、あっさりと解決してしまいました。
一度OnShowも自分で試してみたんですが、その時はOnCreateと同じ
デバッガの例外エラーが出ていたのですが・・・
なぜ今回うまくいったのかは分かりませんが、うまくいったので良しと
する事にします。

早々の助言、ありがとうございました。
また何かあったときよろしくお願い致します。


にしの  2003-09-11 17:18:51  No: 4754

すでに解決済みのようですが念のため。

Form1,Form2を、自動生成するとき、Form1がメインであれば、

Form1を作成
Form2を作成
Form1を表示
となっています。
このとき、イベントの発生順は、
Form1Create
Form2Create
Form1Show
です。
Form1Createでは、Form2がCreateされていないわけですね。
Form1のOnCreateでForm2を作成すれば問題なく動くはずです。

できる限り、自動生成はメインフォームの1つだけにして、他は自前のコードで作成したほうがよいです。
破棄に関しては、たいていの場合Application任せでOKです。


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

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






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