- 題名: MDIの子ウィンドウに対するメッセージ
- 日時: 2005/01/21 10:37:34
- ID: 8590
- この記事の返信元:
- (なし)
- この記事への返信:
- [8591] Re[1]: MDIの子ウィンドウに対するメッセージ2005/01/21 10:53:23
- ツリーを表示
じゃんぬねっと です。
■No8592に返信(ODさんの記事)
> ActiveFormのCapsionでそのフォームの種類を
> 判断し、各子ウィンドウのメソッドを呼ぶように
> 対応できそうです。
それは、保守性を考えると宜しくない仕様かと思われます。
ちゃんと Type を見るようにした方が安全です。
まあ、実装者の自由で、私がどうこう口出しできるものではありませんが...
Source:-----------------------------------------------------
【basMain (標準モジュール)】
' エントリ ポイント
Public Sub Main()
' フォームの新しいインスタンスを生成する
Dim hFormMain As MDIForm1
Set hFormMain = New MDIForm1
' フォームの表示
Call hFormMain.Show(vbModeless)
End Sub
------------------------------------------------------------
【Form1 〜 Form3 (MDI 子フォーム 3 つ)】
' メッセージを受け取るメソッド
Public Sub ShowMessage(ByVal nPrompt As String)
Call MsgBox(nPrompt)
End Sub
------------------------------------------------------------
【MDIForm1 (MDI 親フォーム)】
' プライベート メンバ (MDI 親フォームはこの 3 つの MDI 子フォームを持つ)
Private mForm1 As Form1
Private mForm2 As Form2
Private mForm3 As Form3
' Load() イベント
Private Sub MDIForm_Load()
' ロード時に MDI 子フォームの新しいインスタンスを生成する
Set mForm1 = New Form1
Set mForm2 = New Form2
Set mForm3 = New Form3
' MDI 子フォームをすべて表示
Call mForm1.Show(vbModeless)
Call mForm2.Show(vbModeless)
Call mForm3.Show(vbModeless)
End Sub
' メッセージを送信
Private Sub Picture1_Click()
Select Case TypeName(Me.ActiveForm)
Case "Form1"
Call mForm1.ShowMessage("ここは Form1 ですか?")
Case "Form2"
Call mForm2.ShowMessage("ここは Form2 ですか?")
Case "Form3"
Call mForm3.ShowMessage("ここは Form3 ですか?")
End Select
End Sub
------------------------------------------------------------
分類:[VB6以前]
MDIで親ウィンドウで発生した要求に対する処理を、
アクティブな子ウィンドウ側で実行したいのですが、
親から子ウィンドウの関数を呼ぶ方法、または
子ウィンドウに対してメッセージを送信し、子ウィンドウ側で
そのイベントを受ける方法がわかりません。
どなたか、ご教授お願いします。