category name  »  page title date

反応つきボタン2

ユーザーフォーム上のボタンを凹ませるのをお手軽にしようと思えば、ユーザーフォームの SpecialEffect の Sunken 効果を利用する手もあります。

たとえば、こんな感じの操作パネルを用意して、それぞれのボタンをクリックすると、ちょっと凹んで所定の処理を行う、というのをやってみました。 配置したコントロールは、いずれも Image コントロールで、左から DrawAreaImage、DrawImage、DeleteImage、OptionImage、HelpImage、InfoImage、CreditImage という名前をつけてあります。このうちで、太字で示したコントロールをクリックした際に、凹む効果が出るようにしました。 下の図が、DrawAreaImage がクリックされた時に凹んだ様子です。ポチッと音がして一瞬凹んだ後で元に戻ります。


TestClickAction() は、このユーザーフォームを表示するものです。これが表示されてどれかのコントロールがクリックされると、、それぞれの Click イベントが ClickAction() を呼び出して、ちょっと音を出してボタンを凹ませます。音を出す ButtonChick() 関数は、こちらを使ったものです。 凹む時間は、定数 delaySec で 0.15 秒 と設定しました。 ユーザーフォームでは、それぞれの Image のクリックイベントでこの ClickAction を呼び出します。

標準モジュール   ClickAction()

Private Const delaySec = 0.15
Public Sub TestClickAction() ConsoleForm.Show vbModeless End Sub
'----- Image Click 時のアクション Public Sub ClickAction(ctr As Control) ButtonChick With ctr .SpecialEffect = fmSpecialEffectSunken Application.Wait [now()] + delaySec / 86400 .SpecialEffect = fmSpecialEffectFlat End With End Sub

ユーザーフォーム   ConsoleForm

Private Sub DeleteImage_Click()
    ClickAction DeleteImage
    testMsg "DeleteImage"
End Sub
Private Sub DrawAreaImage_Click()
    ClickAction DrawAreaImage
    testMsg "DrawAreaImage"
End Sub
Private Sub DrawImage_Click()
    ClickAction DrawImage
    testMsg "DrawImage"
End Sub
Private Sub OptionImage_Click()
    ClickAction OptionImage
    testMsg "OptionImage"
End Sub
Private Sub CreditImage_Click()
    ClickAction CreditImage
    testMsg "CreditImage"
End Sub
Private Sub HelpImage_Click()
    testMsg "HelpImage"
End Sub
Private Sub InfoImage_Click()
    testMsg "InfoImage"
End Sub

Private Sub testMsg(msg)
      MsgBox msg & "がクリックされた", vbOKOnly, "クリックのテスト"
End Sub