Sometimes I need to control a VB form while focus is on another one. For example, I want form B to beresized when I press the “OK” button on form A. In every form that must be “remote controllable,” I include aninvisible text box, such as TextCommand, with the Change procedure containing code like this:
Sub TextCommand_Change () Dim msg as string msg = Trim$(Me.TextCommand.Text) If Len(msg) = 0 Then Exit Sub Select Case msg Case "COMMAND_RESIZE" Call MyFormResize Case "COMMAND_REPAINT" Call MyFormPaint ... End Select Me.TextCommand = ""End Sub
You can remotely control this form by sending the appropriate value to its TextCommand field:
Sub Command1_Click () formB.TextCommand = "COMMAND_RESIZE" DoEventsEnd Sub
Use this code to send messages from an MDI form to its child:
Dim f As FormSet f = Me.ActiveFormf.TextCommand = "COMMAND_RESIZE"
If you program under VB4 or VB5, you might wish to use Public form properties and methods instead.