フォームをランダム表示でひとつずつ消していく


魔鬼  2004-01-20 14:58:09  No: 111443  IP: [192.*.*.*]

またまたよろしくお願いします。
フォームが50個あってそれをランダムで表示させることはできましたが、表示したフォームをもう開かないという方法がどうしてもできません。自分がヘタレなのはよくわかっていますが、よろしくお願いします。

編集 削除
いちゆ  2004-01-20 15:01:49  No: 111444  IP: [192.*.*.*]

へたれ…ねぇ…
Collectionクラスについて調べてみて。
わからなかったら…後はどうしようもないなぁ。
ソースがないし。

編集 削除
かな  2004-01-20 19:19:46  No: 111445  IP: [192.*.*.*]

あまりよい手ではないですが…

form1にcommand1、command2、text1があるものと、form2を作る。

form1にこれ

Option Explicit

Private Sub Command1_Click()
    Call myFormCheck(Text1.Text)
End Sub

Private Sub Command2_Click()
Dim frmForm As Form
Static intCnt As Integer
    intCnt = intCnt + 1
    Set frmForm = New Form2
    frmForm.Caption = Format$(intCnt)
    Load frmForm
    frmForm.Show
End Sub

Private Sub myFormCheck(strMyCaption As String)
Dim myForm As Form
    For Each myForm In Forms
        If myForm.Caption = strMyCaption Then
            Unload myForm
        End If
    Next
End Sub

Private Sub Form_Load()
    Me.Caption = "0"
    Text1.Text = ""
End Sub

Private Sub Form_Unload(Cancel As Integer)
    End
End Sub

これで、コマンド2を押すたびに番号のついたform2が生まれます。
コマンド1を押すたびにtext1に入力した番号のフォームを閉じます。
あくまでも例ですが、このように閉じたいフォームを開いている中から
探してなんとかするという方法になりそうな気がします。

> もう開かない
開くときに開いていい物かどうかとかの判断自体の記述は、作者さんのご判断かと。

編集 削除