ページ 11

ボタンの無効化

Posted: 2005年12月20日(火) 03:29
by shoji
いつもお世話になります。
例えば、Button1を1回クリックしたら、Button2をクリックするまで
Button1を何度クリックしても、反応しないようにしたいのですができるものでしょうか?
よろしくお願いします。

Re: ボタンの無効化

Posted: 2005年12月20日(火) 03:43
by 淡幻星
例えば、Button1を1回クリックしたら、Button2をクリックするまで
Button1を何度クリックしても、反応しないようにしたいのですができるものでしょうか?
EnableWindow() で出来ます。
使い方はヘルプファイルを見てください。

・・・はさすがに端的過ぎますね(苦笑)。以下修正→追記です。
Button1のIDをCommandButton1とすると

コード: 全て選択

'ボタンを無効にする(何度クリックしても反応しないようにする)
EnableWindow( GetDlgItem(hMainWnd, CommandButton1), FALSE )

'ボタンを有効にする(クリックできるようにする)
EnableWindow( GetDlgItem(hMainWnd, CommandButton1), TRUE )
といった感じになります。

遅くなりました。ごめんなさい!

Posted: 2005年12月22日(木) 19:30
by shoji
できました!
見事に押しても押しても反応しませんね。
ただ、ボタンの字が薄くなるのはモロ無効化
している感じですよね。
というのは、このボタンとは実は小数点の「.」なのです。
CLEARするまで、誤ってクリックしても反応しないように
という事だったんです。
僕のほうが説明不足でした。

ほかの方法があればご教授願いたいです。

Re: 遅くなりました。ごめんなさい!

Posted: 2005年12月22日(木) 20:54
by 淡幻星
shojiさん さんが書きました:このボタンとは実は小数点の「.」なのです。
CLEARするまで、誤ってクリックしても反応しないように
という事だったんです。
ということは、電卓でも作っているのでしょうか?
いわゆる無効化でなく単純に無反応にするだけなら、
Dim fPeriod As Long
などのフラグ変数をグローバルに用意して、
その小数点のボタンが押されたときのイベントコーディングの場所に

コード: 全て選択

If( fPeriod = TREU )Then
    'ボタンが押されたときの動作を記述。
    '当然ながら fPeriod = FALSE としておけば、
    'ここの動作はスルーされます。
EndIf
のように記述すれば良いと思いますが・・・望んでいる動作は
こういうことで良いのでしょうか?

※「フラグ変数」というのは、単にON/OFFを管理する変数という意味で
 そう呼んでいるだけ、それようの特別の変数があるわけではありません^^;。
 見れば分かるように唯のLong型です。