アクセス小僧:乱数を使ったアニメの様なもの(改) [コンピューター]
アクセスのフォームでボタンの色や表示/非表示をタイマー処理と乱数で切り替える事により、
アニメのようなものを作ってみました。だけでは、つまらないので、ボタンに表示
されるテキストも乱数で変更できるようにしてみました。
【前回の記事】
https://cheese999.blog.ss-blog.jp/2020-12-28
【流れ】
1.ボタンを押したら、タイマー処理を起動/停止。
2.タイマー処理でボタンの前景色、背景色を変更。色指定は乱数(0-255)を使い、
RGBの各色を指定。
3.タイマー処理でボタンに表示するテキストを変更。乱数を使用して文字コードを
ランダムに指定。(★★今回追加★★)
4.タイマー処理でボタンの表示/非表示を変更。乱数を使って表示/非表示を
選択。チェックボックスがチェックされている時は「表示」に固定。
【スクリプト】
Private Sub ボタン_タイマー_Click()
'【機能】タイマー処理の起動、停止
If Me.TimerInterval <> 0 Then
Me.TimerInterval = 0 ' 停止
Me!コンボ_NewPW桁数.SetFocus ' NewPW桁数にフォーカス
Me!ボタン_タイマー.BackColor = RGB(209, 234, 240) ' 背景色=#D1EAF0
Me!ボタン_タイマー.ForeColor = RGB(64, 64, 64) ' 前景色=#404040
Me!ボタン_タイマー.Caption = "タイマー"
Me!ボタン_タイマー.ControlTipText = "タイマー処理の起動"
Me!ボタン_タイマー.Visible = True ' ボタンを表示
Me!ボタン_タイマー.SetFocus ' ボタン_タイマーにフォーカス
Else
Me.TimerInterval = 1000 ' 起動
Me!ボタン_タイマー.ControlTipText = "タイマー処理の停止"
End If
End Sub
Private Sub Form_Timer()
'【フォームのタイマー処理】
'【変数】
Dim myBL1 As Boolean
' Dim i As Variant ' 変数
'【実行コード】
' i = Me!ボタン_タイマー.BackColor
' Debug.Print "Me!ボタン_タイマー.BackColor=" & Me!ボタン_タイマー.BackColor
Me!コンボ_NewPW桁数.SetFocus ' NewPW桁数にフォーカス
Me!ボタン_タイマー.BackColor = RGB(UFRnd1(0, 255), UFRnd1(0, 255), UFRnd1(0, 255)) ' 背景色=ランダム
Me!ボタン_タイマー.ForeColor = RGB(UFRnd1(0, 255), UFRnd1(0, 255), UFRnd1(0, 255)) ' 前景色=ランダム
Select Case UFRnd1(0, 1)
Case 0
Me!ボタン_タイマー.Caption = Chr(UFRnd1(0, (Asc("ん") - Asc("ぁ"))) + Asc("ぁ")) ' 標題=ランダム(ぁ,829F,-32097 => ん,82F1,-32015)
'Debug.Print "a=" & Asc("ん") - Asc("ぁ")
Case 1
Me!ボタン_タイマー.Caption = Chr(UFRnd1(0, (Asc("Z") - Asc("A"))) + Asc("A")) ' 標題=ランダム(A,8260,-32160 => Z,8279,-32135)
End Select
If Me!チェック191_常時表示.Value = True Then
Me!ボタン_タイマー.Visible = True ' 常時表示
Else
' ランダム表示
myBL1 = UFRnd1(0, 1) - 1
Me!ボタン_タイマー.Visible = myBL1 ' ボタンを表示(-1)、非表示(0)
If myBL1 Then
Me!ボタン_タイマー.SetFocus ' ボタン_タイマーにフォーカス
End If
End If
'Me!ボタン_タイマー.BackColor = RGB(209, 234, 240) ' 背景色=#D1EAF0
End Sub
Function UFRnd1(myMin1 As Long, myMax1 As Long) As Long
'【機能】myMin1 - myMax1の間の乱数を発生
'【引数】
' myMin1 : 最小値
' myMax1 : 最大値
'【変数】
'【実行コード】
UFRnd1 = Int(Rnd * (myMax1 - myMin1 + 1) + myMin1)
End Function
Private Sub Form_Load()
'【イベント】フォーム読み込み時
Me!チェック191_常時表示.Value = True ' タイマーボタン:常時表示
Me!チェック191_常時表示.ControlTipText = "タイマーボタン常時表示:ON/OFF"
Me.TimerInterval = 0 ' タイマー停止
Me!コンボ_NewPW桁数.SetFocus ' NewPW桁数にフォーカス
Me!ボタン_タイマー.BackColor = RGB(209, 234, 240) ' 背景色=#D1EAF0
Me!ボタン_タイマー.ForeColor = RGB(64, 64, 64) ' 前景色=#404040
Me!ボタン_タイマー.Visible = True ' ボタンを表示
Me!ボタン_タイマー.Caption = "タイマー"
Me!ボタン_タイマー.ControlTipText = "タイマー処理の起動"
Me!ボタン_タイマー.SetFocus ' ボタン_タイマーにフォーカス
' Debug.Print "ぁ=" & Asc("ぁ")
' Debug.Print Chr(Asc("ぁ") + 5) & "=" & Asc("ぁ") + 5
' Debug.Print "Me!ボタン_タイマー.name=" & Me!ボタン_タイマー.Name
' Debug.Print "Me!ボタン_タイマー.Caption=" & Me!ボタン_タイマー.Caption
End Sub
アニメのようなものを作ってみました。だけでは、つまらないので、ボタンに表示
されるテキストも乱数で変更できるようにしてみました。
【前回の記事】
https://cheese999.blog.ss-blog.jp/2020-12-28
【流れ】
1.ボタンを押したら、タイマー処理を起動/停止。
2.タイマー処理でボタンの前景色、背景色を変更。色指定は乱数(0-255)を使い、
RGBの各色を指定。
3.タイマー処理でボタンに表示するテキストを変更。乱数を使用して文字コードを
ランダムに指定。(★★今回追加★★)
4.タイマー処理でボタンの表示/非表示を変更。乱数を使って表示/非表示を
選択。チェックボックスがチェックされている時は「表示」に固定。
【スクリプト】
Private Sub ボタン_タイマー_Click()
'【機能】タイマー処理の起動、停止
If Me.TimerInterval <> 0 Then
Me.TimerInterval = 0 ' 停止
Me!コンボ_NewPW桁数.SetFocus ' NewPW桁数にフォーカス
Me!ボタン_タイマー.BackColor = RGB(209, 234, 240) ' 背景色=#D1EAF0
Me!ボタン_タイマー.ForeColor = RGB(64, 64, 64) ' 前景色=#404040
Me!ボタン_タイマー.Caption = "タイマー"
Me!ボタン_タイマー.ControlTipText = "タイマー処理の起動"
Me!ボタン_タイマー.Visible = True ' ボタンを表示
Me!ボタン_タイマー.SetFocus ' ボタン_タイマーにフォーカス
Else
Me.TimerInterval = 1000 ' 起動
Me!ボタン_タイマー.ControlTipText = "タイマー処理の停止"
End If
End Sub
Private Sub Form_Timer()
'【フォームのタイマー処理】
'【変数】
Dim myBL1 As Boolean
' Dim i As Variant ' 変数
'【実行コード】
' i = Me!ボタン_タイマー.BackColor
' Debug.Print "Me!ボタン_タイマー.BackColor=" & Me!ボタン_タイマー.BackColor
Me!コンボ_NewPW桁数.SetFocus ' NewPW桁数にフォーカス
Me!ボタン_タイマー.BackColor = RGB(UFRnd1(0, 255), UFRnd1(0, 255), UFRnd1(0, 255)) ' 背景色=ランダム
Me!ボタン_タイマー.ForeColor = RGB(UFRnd1(0, 255), UFRnd1(0, 255), UFRnd1(0, 255)) ' 前景色=ランダム
Select Case UFRnd1(0, 1)
Case 0
Me!ボタン_タイマー.Caption = Chr(UFRnd1(0, (Asc("ん") - Asc("ぁ"))) + Asc("ぁ")) ' 標題=ランダム(ぁ,829F,-32097 => ん,82F1,-32015)
'Debug.Print "a=" & Asc("ん") - Asc("ぁ")
Case 1
Me!ボタン_タイマー.Caption = Chr(UFRnd1(0, (Asc("Z") - Asc("A"))) + Asc("A")) ' 標題=ランダム(A,8260,-32160 => Z,8279,-32135)
End Select
If Me!チェック191_常時表示.Value = True Then
Me!ボタン_タイマー.Visible = True ' 常時表示
Else
' ランダム表示
myBL1 = UFRnd1(0, 1) - 1
Me!ボタン_タイマー.Visible = myBL1 ' ボタンを表示(-1)、非表示(0)
If myBL1 Then
Me!ボタン_タイマー.SetFocus ' ボタン_タイマーにフォーカス
End If
End If
'Me!ボタン_タイマー.BackColor = RGB(209, 234, 240) ' 背景色=#D1EAF0
End Sub
Function UFRnd1(myMin1 As Long, myMax1 As Long) As Long
'【機能】myMin1 - myMax1の間の乱数を発生
'【引数】
' myMin1 : 最小値
' myMax1 : 最大値
'【変数】
'【実行コード】
UFRnd1 = Int(Rnd * (myMax1 - myMin1 + 1) + myMin1)
End Function
Private Sub Form_Load()
'【イベント】フォーム読み込み時
Me!チェック191_常時表示.Value = True ' タイマーボタン:常時表示
Me!チェック191_常時表示.ControlTipText = "タイマーボタン常時表示:ON/OFF"
Me.TimerInterval = 0 ' タイマー停止
Me!コンボ_NewPW桁数.SetFocus ' NewPW桁数にフォーカス
Me!ボタン_タイマー.BackColor = RGB(209, 234, 240) ' 背景色=#D1EAF0
Me!ボタン_タイマー.ForeColor = RGB(64, 64, 64) ' 前景色=#404040
Me!ボタン_タイマー.Visible = True ' ボタンを表示
Me!ボタン_タイマー.Caption = "タイマー"
Me!ボタン_タイマー.ControlTipText = "タイマー処理の起動"
Me!ボタン_タイマー.SetFocus ' ボタン_タイマーにフォーカス
' Debug.Print "ぁ=" & Asc("ぁ")
' Debug.Print Chr(Asc("ぁ") + 5) & "=" & Asc("ぁ") + 5
' Debug.Print "Me!ボタン_タイマー.name=" & Me!ボタン_タイマー.Name
' Debug.Print "Me!ボタン_タイマー.Caption=" & Me!ボタン_タイマー.Caption
End Sub
よい年になることをお祈り申し上げます。
本年もよろしくお願いいたします。
by ハマコウ (2021-01-04 21:46)
ヤバイぜ! ありがとうございます(^_0)ノ
by cheese999 (2021-01-05 00:18)
ハマコウさん、
ありがとうございます。(^_0)ノ
by cheese999 (2021-01-05 00:19)