[リストへもどる]
一括表示

投稿時間:2003/06/05(Thu) 20:59
投稿者名:ゆーき
Eメール:
URL :
タイトル:
マルチタスクを判別して処理をするには?
はじめまして、VBのフォームに関してご質問させて
いただきます。
VB初心者で伝えたいポイントがずれてしまう
ことがあるかもしれませんが多めに見てくだされば幸いです。

フォームの表示で同じフォームを表示させるよう以下のソースを
組みました。

''Form1のソース↓

Private Sub Command1_Click()
    Dim frm As New Form2
    frm.Show
end Sub

これでボタンを押すと同じフォームがいくつも表示されるのですが、
そのなかで開いたフォームを指定して、その指定されたフォームのみ
表示元(Form1)のほうからボタンを押して、
文字を書き込むような処理を考えているのですが、その方法がわからず
悩んでいます。

''Form1のソース↓

Private Sub Command2_Click()
    Dim frm As New Form2
    frm.text1 = "hello"
end Sub

としても文字を書き込んでくれません。
複数同じフォームがあってどれに書き込めばという
情報が無く判断がつかないのが原因だと考えています。

初歩的なことで申し訳ありませんが、お知恵をお貸しください。
宜しくお願いいたします。

投稿時間:2003/06/05(Thu) 21:38
投稿者名:シャフト
Eメール:
URL :
タイトル:
Re: マルチタスクを判別して処理をするには?
Form1にはCommand1とCommand2が貼り付けてあり、
Form2にはtext1が貼り付けてあるのですよね。

Private Sub Command2_Click()
Dim frm As New Form2
frm.text1 = "hello"
frm.Show    '←追加
end Sub

と、frm.Showを追加すれば新しくForm2が作成され、
Form2のtext1に"hello"と表示されると思います。

ただ、おそらくやりたいのはCommand1で作成したForm2の内の
いづれかのtext1に"hello"と表示させたいのだと思うので、
サンプルとして下の様にしてみてはどうでしょう?
Form1にLabel1とText1を貼り付けてください。

Private Sub Command1_Click()
    Dim frm As New Form2
    Static lForm2Num As Long
    
    frm.Show
    
    lForm2Num& = lForm2Num& + 1&
    Me.Label1.Caption = CStr(lForm2Num&)
    
End Sub

Private Sub Command2_Click()
    Dim frm As Form2
    Dim lShowForm2Num As Long
    
    lShowForm2Num& = CLng(Me.Text1.Text)
    If lShowForm2Num& > CLng(Me.Label1.Caption) Then
        Call MsgBox("指定番号のフォームは作成されていません", vbOKOnly)
        Exit Sub
    End If
    Set frm = Forms(lShowForm2Num&)
    frm.Text1 = "hello"
    
End Sub

Form1のラベルに表示されている数字より小さい数字を
Form1のテキストボックスに入力してください。

投稿時間:2003/06/06(Fri) 10:35
投稿者名:ゆーき
Eメール:
URL :
タイトル:
Re^2: マルチタスクを判別して処理をするには?

シャフトさん、

参考になるアドバイスをいただき大変感謝しています(^^)
ご指摘とおりのロジックを組み込んだら、
無事に問題を解決することができました!!

お礼のレスポンスが遅れてしまい、申し訳ありませんでした m(__)m