呼び出すには?

解決


カジ  2004-02-04 14:54:18  No: 111661  IP: [192.*.*.*]

お願いします。
質問はformが三個ありまして、form1のボタンを押すとform2に飛びます。
それでform2のボタンを押すとform3に飛ぶというのを最初のフォームのプログラムに書きたいのですがどうやればいいのかわかりません。
質問がわかりにくいですがぜひお願いします。

編集 削除
とんとん  2004-02-04 14:57:14  No: 111662  IP: [192.*.*.*]

> 最初のフォームのプログラムに書きたい

最初のフォームって Form1 ですか?
Form2 や Form3 にはコードを1つも書かないということですか?
それは無理です。
少なくとも Form2 や Form3 には
Command1_Click イベントプロシージャが必要になります。

編集 削除
カジ  2004-02-04 15:05:10  No: 111663  IP: [192.*.*.*]

すいません。最初のフォームはform1です。
やっぱり無理ですか・・・
自分が作りたいのはformが全部で10個あり、それをランダムで呼び出して表示したフォームは二回目は開かないようにするというものです。
それで最後の一個になったらプログラム終了というものです。
vbはじめたばかりなのでちょっとつかめてませんね。色々と。
上に書いたことでなにか参考になるようなことがあれば情報ぜひお願いします。

編集 削除
特攻隊長まるるう  2004-02-04 17:09:29  No: 111664  IP: [192.*.*.*]

プロパティとかで Form の名前だけ受け渡すならできると思う。
…まあ、Form 自体を引数にしても良いんだけど。

編集 削除
ねろ  2004-02-04 17:29:51  No: 111665  IP: [192.*.*.*]

どのフォームに飛ぶかは最初のフォームに書かないで
モジュールに書けばいいのでは。

編集 削除
特攻隊長まるるう  2004-02-05 12:13:30  No: 111666  IP: [192.*.*.*]

ランダムとかは自分で考えてほしいですが、とりあえず
最初の質問の回答の一つという事で…
フォームは MainForm Form1 Form2 …という名前で
作成してください。あとは適当に数を増やしても動作
するでしょう。

'//////////////////////////////////////////////////////////
'MainFormコード
Option Explicit

' 公開メソッド
Public Sub Child_Click(ByVal ChildFormsName As String)
    Dim i As Integer
    
    For i = 1 To Forms.Count - 2
        If ChildFormsName = "Form" & CStr(i) Then
            Forms_Show (i + 1)
        End If
    Next i
End Sub

' ボタン押下イベント
Private Sub Command1_Click()
    Forms_Show 1
End Sub

' Form表示用
Private Sub Forms_Show(ByVal FormNumBer As Integer)
    Dim FormX As Form
    
    For Each FormX In Forms
        With FormX
            If .Name = "Form" & CStr(FormNumBer) Then
                .Show vbModeless
                Exit Sub
            End If
        End With
    Next
End Sub

Private Sub Form_Load()
    ' 全ての Form を Load しておく
    Load Form1
    Load Form2
    Load Form3
'    Load Form4
'    Load Form5
End Sub
'//////////////////////////////////////////////////////////

'//////////////////////////////////////////////////////////
'Form1〜?コード(共通)
Option Explicit

' ボタン押下イベント
Private Sub Command1_Click()
    MainForm.Child_Click (Me.Name)
End Sub
'//////////////////////////////////////////////////////////

編集 削除
カジ  2004-02-05 13:50:13  No: 111667  IP: [192.*.*.*]

みなさんどうもありがとうございました。
非常に参考になりました。
またよろしくお願いします。

編集 削除