- 締切済み
ボタンを押しっぱなしにした時の処理
ボタン(TButton)を押しっぱなしにした時に、 ラベルに表示した数値を連続で上昇させる プログラム(ゲーム機のコントローラのような) を作りたいのですが、よろしければ方法を教えてくだい。 処理系はC++Builder5.0(Pro.)です。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- selenity
- ベストアンサー率41% (324/772)
難しく考えてはいけません。 簡単に言えばドラッグしている状態を検出すれば よいのですから、、、 入門本などによく例題として掲載されているお絵かき ソフトのプログラムが似たようなことをやっていますよ。 一度お絵かきソフトのソースコードを眺めて みては如何ですか? 通常お絵かきソフトはOnMouseDown, OnMouseMove, OnMouseUpを使って線を描画しますが、 OnMouseMoveの代わりに何かを使えば、、、
- mnabe
- ベストアンサー率33% (427/1283)
補足読みました。 えっと複雑になって、今確認出来る環境にないので、間違っているかも知れませんが...。 どうしてもボタンコントロールでないといけないって事でよろしいのでしょうか? それならば、 マウスの移動を検知するイベント(メッセージ)を拾い続けて、ボタンコントロールの枠からはみ出さない間で、且つマウスの状態を調べて、クリック状態なら、カウントアップを行う様にしてみてはどうでしょうか? また、1秒間隔でなら、一回カウントアップした時に、タイマを起動させてタイマアップした時に、マウスの現在位置とボタンの状態を調べて、まだボタンの上にある場合には、カウントアップする様にすれば出来ると思います。 でも...本当は、ボタンコントロールでなく、別の適したコントロールがあると思うんだけどなぁ スピンコントロールとか....ね。
お礼
お返事ありがとうございました。
- mnabe
- ベストアンサー率33% (427/1283)
何かしらのグローバルクラスに、数値を保存する変数を作成して、ボタンのクリックイベントが発生した時に、そのクラスの変数をインクリメントして、ラベルに表示すればいいのでは??
補足
お返事ありがとうございました。 ボタンを連打するのではなくて、ボタンを押してから一定時間(1秒)が経過した後、押したままの状態で、ラベルの数値が一定間隔(1)ずつ上昇するというプログラムを作りたいのです。つまりクリックイベントは最初の1回しか発生しない状態です。
お礼
お返事ありがとうございました。 難しく考えすぎてました。 OnMouseDownでフラグ変数をOnにして タイマーを起動し、ラベルに数値表示する 方法でやってみます。(OnMouseUpでフラグOff)