お世話になります。
画面A、画面B、画面Cがあります。
・画面Aから画面BをModalで呼び出します。このとき画面Aは表示させたままです。
・画面Bから画面CをModal呼び出します。このとき画面Bは閉じます。
・画面Cには「閉じる」ボタンがあり、閉じるボタンを押した時・Windowの×ボタンを押したときに、画面Cを閉じて、画面Bに戻ります。
以上のことをしたいのですが、どうもうまくいきません・・。
Modalで表示する際は、既にModalな画面があれば、それをHideかUnloadしなければならないようです。
画面CのForm_Unloadイベントで、
> Unload 画面C
> 画面B.Show vbModal
をしても、画面Cがロード状態のままになってしまいます。
教えてください。よろしくお願いします。
アンロードするんじゃなくて非表示にるのは駄目なんですかね?
Form1
Form2
Form3
を用意
Form1,2にcommandボタン配置
form1に記述
Private Sub Command1_Click()
Form2.Show vbModal
End Sub
form2記述
Private Sub Command1_Click()
Me.Visible = False
Form3.Show vbModal
Me.Visible = True
End Sub
こんな感じじゃ駄目?
> Modalで表示する際は、既にModalな画面があれば、
> それをHideかUnloadしなければならないようです。
ModalのフォームからModalのフォームを表示することは出来ますけど?
で、Hideで構わないなら
> ・画面Bから画面CをModal呼び出します。このとき画面Bは閉じます。
実際どうやってるのか知りませんが、画面Bから画面Cを呼ぶときに
Me.Hide
画面C.Show vbModal
Me.Visible = True
と書けば出来ます。
画面CのForm_Unloadイベントでは特に何もする必要はありません。
どうろさんのコードでほぼ問題ないとは思うんですが、
こちらの環境では Form2 の Modal が解けちゃったので。
[VB6.0]
'/// Form1
Option Explicit
Private Sub Command1_Click()
Form2.Show vbModal
End Sub
'/// Form2
Option Explicit
Private Sub Command1_Click()
Me.Hide
Form3.Show vbModal
Me.Show vbModal '←ここだけ修正点
End Sub
'/// Form3
Option Explicit
みなさん、ありがとうございます。
えぇと、Form2からForm3を呼び出すのは問題なく出来るんですが、
Form3からForm2を呼び出すときに、Form3が画面に残ってしまうんです。
いろいろやってみましたがダメでした。
書き忘れましたが私の環境は、WinXP+SP1、VB6です。
あと、Form2からForm3を呼ぶときは、Form2をUnloadではなくHideでもいいのですが、Form3からForm2を呼ぶときは、HideではなくUnloadしたいです。
よろしくお願いします。。。
…意味が分からない。Form3 から Form2 を
呼び出す必要性をこれっぽっちも感じない。
nanashi さんが書かれているように
>・画面Aから画面BをModalで呼び出します。このとき画面Aは表示させたままです。
>・画面Bから画面CをModal呼び出します。このとき画面Bは閉じます。
>・画面Cには「閉じる」ボタンがあり、閉じるボタンを押した時・Windowの×ボタンを押したときに、画面Cを閉じて、画面Bに戻ります。
だけなら Form3 から Form2 を呼び出す必要が無いんです。
呼び出さなくても実現できます。
"モーダル" ダイアログ ボックスは、終了(非表示またはアンロード)
しない限り次の操作に進むことができないダイアログボックス
です。Form3 から Form2 をモーダルで呼び出すことが必要
なら、Form2 が終了(非表示またはアンロード)しないと Form3
は次の作業ができません。Form3 は Form2 が終了するまで
アンロードしないと言っているのも同じです。それをアンロード
するとか言ってる時点で矛盾してます。
Form2 が終了(非表示またはアンロード)した時まで処理を
待っているのは誰ですか?Form3 はアンロードするんだから
待っていませんよね?。だったら Form2 にモーダルで
命令する事が間違ってます。処理を待つ人が Form2 を
モーダルで表示して下さい。
特攻隊長まるるうさん、ありがとうございます。
> Form3 から Form2 を呼び出す必要が無いんです。
呼び出さなくても実現できます。
> "モーダル" ダイアログ ボックスは、終了(非表示またはアンロード)
しない限り次の操作に進むことができないダイアログボックス
です。
ようやくこの意味がわかりました。今まで理解していませんでした…。
Form3をモーダルで開いたら、Form3を閉じるときにForm2をロードする必要はないんですね。
これでうまくできました。どうもありがとうございました。m(__)m
ツイート | ![]() |