tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: 別formの表示について
投稿日: 2010/05/14(Fri) 20:14
投稿者K.J.K.
> 環境は VB6 SP6 WindowsXP SP3 です。

SPは最新のものを当てることを勧めます。

最近だと反応の無い投稿で
http://hanatyan.sakura.ne.jp/vb60bbs/wforum.cgi?no=14668&reno=no&oya=14668&mode=msgview&page=0
がありますが、それとは無関係ですか?

> formAでは
>    text入力中に コマンドボタンを押すと
>    formB.show 1 として foemBを表示させます。 
>    formAを Unload するときに unload formB としています。
>
> formBでは
>    入力処理後に
>    me.visible = False
>    formA.text1.SetFocus   としています。
>
> 子フォームを 一度起動中 何度でもformBを表示させ処理後には  formA.text1 にフォーカスが戻りますが
> いったん formAを Unload した後 再度formA を起動させ formBを 表示させると
> 今度は 別なformA を起動させてしまいます。 

Instance と Class の区別を意識しましょう。

切り分け方はいろいろありますが、例えばFormBの1つのメソッドに押し込める
ならば、単純に、FormB 側に

' 戻り値の型などは適切に変更してください。
Friend Function ShowModal(ByVal Owner As FormA) As Boolean
    Call Me.Show(vbModal)    
    ' ここで戻り値も含む各種処理
    Call Me.Hide
    If Not (Owner Is Nothing) Then Call Owner.Text1.SetFocus
End Function
とでもするとか。複数のメソッドやイベントに分けてもいいですし。

FormA側で対応するのならば、FormB側ではFormAを弄らずに、
    Call FormB.Show(vbModal)
    ' もし条件があるのならばここで分岐しておく。
    Call Text1.SetFocus()
とでもすればいいでしょう。普通はこちらでしょうね。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。