[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/07/02(Mon) 18:07
投稿者名:えの
Eメール:
URL :
タイトル:
フォーム非アクティブ時操作。
質問です。
vbの画面が非アクティブ時(他の画面選択時)に
非アクティブ画面のボタンを押しても、アクティブになるだけで、
ボタン等は反応しないようにしたいのですが、
どうすればいいでしょうか?

ご存知の方いらっしゃいましたら、教えてください。
お願いします。

投稿時間:2007/07/02(Mon) 19:41
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: フォーム非アクティブ時操作。
> 非アクティブ画面のボタンを押しても、アクティブになるだけで、
> ボタン等は反応しないようにしたいのですが、

非アクティブでもアクティブでもボタンを使えないようにしたいとなるのですが。

その後は、ボタン等の操作はどのようにするつもりですか?

ボタン等 にはメニュー(システムメニュー含む)等も含まれるのですか?

投稿時間:2007/07/04(Wed) 08:59
投稿者名:えの
Eメール:
URL :
タイトル:
Re^2: フォーム非アクティブ時操作。
返事が遅れてすみません。

現状、非アクティブ時でも、画面のボタンを押すと、
アクティブ状態になりさらにボタンが押された状態になってしまいます。
それを、非アクティブ時に画面のボタンを押しても、
ボタンが押された状態にはならないで、アクティブになり、
アクティブ後初めてボタン等の押下ができる様にしたいのです。
メニュー等も同様、一度アクティブ状態にしないと操作が聞かない
様にしたいのです。

説明がわかりづらくてすみません。

投稿時間:2007/07/04(Wed) 10:29
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: フォーム非アクティブ時操作。
> それを、非アクティブ時に画面のボタンを押しても、
> ボタンが押された状態にはならないで、アクティブになり、
> アクティブ後初めてボタン等の押下ができる様にしたいのです。

仰っていることが矛盾していませんか?
やりたい事(動作)を番号を振って箇条書きに書いて見て下さい。

1.ウィンドウが非アクティブになったら、画面上の操作を出来ないようにする
2.非アクティブウィンドウをクリックしたらアクティブにして、画面上の操作は
  できないようにする
3.アクティブ後? 操作ができるようにする。

投稿時間:2007/07/04(Wed) 11:08
投稿者名:見物人
Eメール:
URL :
タイトル:
Re^4: フォーム非アクティブ時操作。(回答ではありません)
「アクティブ、非アクティブの画面が共に見える状況で、非アクティブのウィンドウに
あるボタンをクリックしてもイベントが起こらないようにしたい」
てこと?

投稿時間:2007/07/04(Wed) 11:48
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: フォーム非アクティブ時操作。
http://support.microsoft.com/kb/168795/ja

のサンプルにおいて、WindowProc プロシージャ内の
 Debug.Print "Message: "; hw, uMsg, wParam, lParam
という行を削除して、かわりに下記のコードに差し替えてみてください。


Const WM_ACTIVATE As Long = 6
Const WA_INACTIVE As Long = 0
Const WA_ACTIVE As Long = 1
Const WA_CLICKACTIVE As Long = 2

If uMsg = WM_ACTIVATE Then
  Debug.Print "WM_ACTIVATE:";
  Select Case wParam
   Case WA_INACTIVE
    Debug.Print "WA_INACTIVE"
   Case WA_ACTIVE
    Debug.Print "WA_ACTIVE"
   Case WA_CLICKACTIVE
    Debug.Print "WA_CLICKACTIVE"
   Case Else
    Debug.Print wParam
  End Select
End If


これにより、フォームのアクティブ状態/非アクティブ状態を監視できるので、
 ・非アクティブになったら、ボタンを使用不可(Enabled=False)にする。
 ・アクティブになったら、ボタンを使用可能(Enabled=True)にする。
のように実装する……というのは如何でしょう。