- - PR -
VB6でのフォームの制御について
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-11 17:08
VB6で開発しています。
下のようにコーディングし、同じフォームを使って複数画面が表示されるようにしました。しかし、これだと、ボタンを押す度に新しい画面が表示されてしまいます。 新しい画面を表示するのは、一回きりにしたいと思っています。 (一度、押すと二度目からは画面が表示されないようにする。) どうすればいいんですか? Private Sub Command2_Click() Dim frm As Form1 Set frm = New Form1 frm.Caption = "Form1のコピーだよ" frm.Visible = True End Sub | ||||||||
|
投稿日時: 2005-10-11 17:16
Yamと申します。
方法は色々ありますが、 ボタンを使用不可にするのがお手軽かと思います。 | ||||||||
|
投稿日時: 2005-10-11 17:19
こんにちは、じゃんぬ です。
仕様によっては Modal 表示するべきだと思います。 Modeless 表示にするのであれば、プライベート メンバにしてインスタンスを見るとか。 VB6 だと暗黙のインスタンス化をするフォームを使えば単一にはなりますがw # Visible = True ではなく、Show メソッドの方が好きかなぁ。 # Show(vbModal) をご存知ないようにも見えてしまいます。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-10-11 17:35
Yamさん、じゃんぬねっとさん、ご親切にどうもありがとう。
細かい仕様を伝えてなくてゴメンなさい。 大元の画面に複数ボタンがあって、どれを押しても画面が開くようにしたいんです。 だから、vbModalは使えないんです。 ボタンを仕様不可にするのは確かにお手軽な方法だけど、ボタンがグレーアウトしちゃうのが、ちょっと、気に入らなくて・・・。 他に何かいい方法ありませんか? | ||||||||
|
投稿日時: 2005-10-11 17:44
情報共有のためにクロスサイトポストリンクさせてください。
http://forums.belution.com/ja/vb/000/013/93s.shtml
フラグを設置するか、インスタンス化されて表示しているかを確認するとか... 後者については先にも書きましたが、詳しく説明すると Forms コレクションなんかが使えるかな... 私は、使ったことないですけど...w _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-10-11 17:45
複数のインスタンスを生成したいからForm1.Showも駄目と言う事でよいですか? 後は普通にFormのメンバ変数にするとか、Collectionを使って、インスタンスを管理するぐらいしか思いつかないですね。 [ メッセージ編集済み 編集者: 甕星 編集日時 2005-10-11 17:50 ] | ||||||||
|
投稿日時: 2005-10-11 17:54
・Formsを回して、当該フォームがあるかどうか確認する。
てのもできるかなと。 | ||||||||
|
投稿日時: 2005-10-11 17:54
どうやら、Forms コレクションだと同一の型のフォームでの識別はできなさそうですね。 ボタンによって、起動する Form が別であれば良いのですが。
ダメであれば、Private あるいは Static なフラグ、 インスタンスを管理するコレクションを自作することになりますね。 手軽なのはフラグですが、少し泥臭いかもしれませんね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1|2|3
次のページへ»