• 締切済み

ボタンを押しっぱなしにした時の処理

ボタン(TButton)を押しっぱなしにした時に、 ラベルに表示した数値を連続で上昇させる プログラム(ゲーム機のコントローラのような) を作りたいのですが、よろしければ方法を教えてくだい。 処理系はC++Builder5.0(Pro.)です。

みんなの回答

  • selenity
  • ベストアンサー率41% (324/772)
回答No.3

難しく考えてはいけません。 簡単に言えばドラッグしている状態を検出すれば よいのですから、、、 入門本などによく例題として掲載されているお絵かき ソフトのプログラムが似たようなことをやっていますよ。 一度お絵かきソフトのソースコードを眺めて みては如何ですか? 通常お絵かきソフトはOnMouseDown, OnMouseMove, OnMouseUpを使って線を描画しますが、 OnMouseMoveの代わりに何かを使えば、、、

Richi
質問者

お礼

お返事ありがとうございました。 難しく考えすぎてました。 OnMouseDownでフラグ変数をOnにして タイマーを起動し、ラベルに数値表示する 方法でやってみます。(OnMouseUpでフラグOff)

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.2

補足読みました。  えっと複雑になって、今確認出来る環境にないので、間違っているかも知れませんが...。  どうしてもボタンコントロールでないといけないって事でよろしいのでしょうか?  それならば、  マウスの移動を検知するイベント(メッセージ)を拾い続けて、ボタンコントロールの枠からはみ出さない間で、且つマウスの状態を調べて、クリック状態なら、カウントアップを行う様にしてみてはどうでしょうか?  また、1秒間隔でなら、一回カウントアップした時に、タイマを起動させてタイマアップした時に、マウスの現在位置とボタンの状態を調べて、まだボタンの上にある場合には、カウントアップする様にすれば出来ると思います。  でも...本当は、ボタンコントロールでなく、別の適したコントロールがあると思うんだけどなぁ スピンコントロールとか....ね。

Richi
質問者

お礼

お返事ありがとうございました。

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

 何かしらのグローバルクラスに、数値を保存する変数を作成して、ボタンのクリックイベントが発生した時に、そのクラスの変数をインクリメントして、ラベルに表示すればいいのでは??

Richi
質問者

補足

お返事ありがとうございました。 ボタンを連打するのではなくて、ボタンを押してから一定時間(1秒)が経過した後、押したままの状態で、ラベルの数値が一定間隔(1)ずつ上昇するというプログラムを作りたいのです。つまりクリックイベントは最初の1回しか発生しない状態です。

関連するQ&A