アプリ版:「スタンプのみでお礼する」機能のリリースについて

vb6を利用しています。

コマンドボタン上で マウスボタンを押し続けていると、その間だけ継続的にイベントが起きるようにはできないのでしょうか?

教えて下さい

A 回答 (3件)

Private a As Boolean


Private i As Long

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

a = True
While a = True
DoEvents
i = i + 1
Label1.Caption = i
Wend

End Sub

Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

a = False

End Sub

Private Sub Form_Load()

i = 0

End Sub


MouseDownとMouseUpを使ったサンプルを作ってみた。
キーとして大事なのは「DoEvents」で一つのイベントで
処理を止めないところ
    • good
    • 0

オブジェクトに対するイベント駆動(ドリブン)の概念を誤解している


ような気がしますが・・・

何がやりたいため、このような特殊な処理を行いたいのかわからないので
答えづらいのですが、以下の3つが考えられるかな。

1.
MouseDownイベント
MouseUpイベント
DoEventsメソッド
のイベントを使って処理の継続実行させる。

2.独自イベントを追加する。

3.タイマーを使って、タイマーイベントを実行する

のどれかでしょうね。
    • good
    • 0

マウスボタンを押し続けている間だけ継続的にイベントが起きるようにはできないようです。


しかし、一度クリックし次にクリックするまで継続的にイベントを発生させることは可能です。

・Command1 がクリックされるとタイマーを起動します。
・タイマーイベントでは、0.1秒毎に Text1_CountUP()をコールします。
・Command1 がクリックされるとタイマーをストップします。

これで、継続的に Text1_CountUP() がコールされます。

Option Explicit

Dim COMMAND1_ISCLICK As Boolean

Private Sub Command1_Click()
  COMMAND1_ISCLICK = Not COMMAND1_ISCLICK
  If COMMAND1_ISCLICK Then
    Me.Text1 = 0
    Me.Timer1.Interval = 100
  Else
    Me.Timer1.Interval = 0
  End If
End Sub

Private Sub Timer1_Timer()
  If COMMAND1_ISCLICK Then
    Text1_CountUp
  End If
End Sub

Public Sub Text1_CountUp()
  Me.Text1 = Val(Me.Text1) + 1
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!