- 締切済み
フォームのアクティブと非アクティブ表示について
Form1からForm2を表示するという処理を以下のようにコーディングしてみました。 **Form1.frm*** Private Sub Command1_Click() Form1.Hide Form1.vbModal Form1.Show End Sub **Form2.frm*** Private Sub Command1_Click() Unlaod Me End Sub 画面にエクスプローラ等のウィンドウが表示されているときに、Form2を表示させようとすると非アクティブ状態で表示されてしまいます。 また、Form2をUnloadするとForm1が表示されるのですが、その際に、Form1のタイトルと、タスクバーに表示されているボタンが反転した後非アクティブ状態になってしまいます。 フォームは常にアクティブで表示させたいのですが、どうすればよいのでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- y_an
- ベストアンサー率57% (24/42)
私の環境ではそのような現象は起きません。 何度も Form1 <-> Form2 をやっても 両フォームともちゃんとアクティブ状態になります。 なので、環境のせいではないでしょうか? 使用しているOS及び、VBのバージョン、サービスパック等は どのようになっていますか? 最新のサービスパックはあたっていますか? ちなみに私の環境は以下の通りです。 OS:WinNT4.0 SP6a VB:Ver6.0 SP5 IE:Ver5.5
- tom777
- ベストアンサー率77% (14/18)
多分、Form1をHideした時点で、そのアプリケーションには 画面が一つもない状態になるので、別アプリにフォーカス が移動してしまいます。 そこからForm2を表示するので、Form2が非アクティブな状 態で表示されてしまうのでしょう。 で、Form1を消すつもりならForm1をModalで表示する必要 はないと思います。 **Form1.frm*** Private Sub Command1_Click() Form2.Show vbModeless Form1.Hide End Sub **Form2.frm*** Private Sub Command1_Click() Unload Me End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Form1.Show End Sub で、どうでしょうか?
- j_euro
- ベストアンサー率25% (29/115)
j_euro ふたたびです。 そいで・・ これ >From2のUnloadの直前に >Form1.SetFocus は、どうでしたか? つまり、ここを >>**Form2.frm*** >>Private Sub Command1_Click() >>Unlaod Me >>End Sub こうやる **Form2.frm*** Private Sub Command1_Click() Form1.SetFocus Unlaod Me End Sub すなわち >フォームは常にアクティブ (「常に前面」じゃなくてね) のためには、他のフォームが終わるときに、目的のフォームにフォーカスをセットする。
- j_euro
- ベストアンサー率25% (29/115)
えと、やりたいことと、現状がまだよくわからないので、当てずっぽうなんですけど・・・ From2のUnloadの直前に Form1.SetFocus してみたらどう? これは、 >Private Sub Command1_Click() >Form1.Hide >Form1.vbModal >Form1.Show >End Sub こうなのかな? Private Sub Command1_Click() Form1.Hide Form2.Show vbModal End Sub 当たった?
補足
すいません。コード書き間違えてました・・・。 Private Sub Command1_Click() Form1.Hide Form2.Show vbModal Form1.Show End Sub でした。