Microsoft Access 掲示板

サブフォームのタイマーイベント / 4

8 コメント
views
4 フォロー
4
hiroton 2022/01/29 (土) 19:28:06 9b9bd@68800

タイマーイベントは単純に時間ごとにイベントを実行するだけ。その挙動(すべてのレコードのコントロールが同時に変更される)は帳票フォームの仕様ですね


基本事項の確認ですが、コントロールの「見た目」はいくつかの要素からなっています
・背景色
・前景色
・枠線(スタイル/色)

hatenaさん指摘の通り、背景色前景色であれば条件付き書式を切り替えれば実現できるでしょう。枠線もやりたいとなると案がないこともないですが、そこまでする?って感じです


さて、条件付き書式を変更すれば点滅できそうだ、となりましたが、hirotonは条件付き書式が好きではありませんし、VBAでいじるのは大変です。条件付き書式を使わずにレコードごとに書式を設定する方法を使うと楽ができそうです

カレント行の背景色の変更 その3(hatena chipsさん)

hatenaさんのブログですね。記事では背景色ですが、前景色も同じ考え方で実装できます
背景色に適用したい場合
メインのコントロール>背景色:透明コントロールの配置:前面
書式設定用コントロール>背景色:本来の背景色、コントロールの配置:背面

前景色に適用したい場合
メインのコントロール>背景色:本来の背景色、コントロールの配置:背面
書式設定用コントロール>背景色:透明コントロールの配置:前面

納期コントロールにぴったり重なる点滅用納期テキストボックスを配置します
コントロールソース:=IIf([納期]<Date,[納期])
背景色:透明
前景色:本来の背景色(※1)

このコントロールを表示したり消したりすれば特定のレコードのコントロールだけ点滅しているように見えます

Private Sub Form_Timer()
    Me!点滅用納期.Visble = Not Me!点滅用納期.Visble
End Sub

注意事項として、前面のコントロールなので普通に触れます。フォーカスがあるときにコントロールを消そうとするとエラーになります。触れないコントロールにするか、即座に納期.Setfocusするような仕掛けが必要でしょう

※1
本来の背景色と同じ色のテキストを前面に配置する≒背景と同化して見えなくなる。です。「文字を消す」ことが目的なら背景色のテクニックで完全にかぶせてしまってもいいですね。前景色でやると、調整によって薄めの文字との点滅とかができたりします

通報 ...
  • 6
    hiroton 2022/01/31 (月) 09:12:18 53823@f966d >> 4

    改めて考えてみたら条件付き書式を弄るのは大変ですが、条件を弄るのは簡単でした

    チェックボックスを配置する(名前:点滅用)

    Private Sub Form_Timer()
        Me!点滅用 = Not Me!点滅用
    End Sub
    

    条件付き書式の条件を調整する
    ex)

    書式設定:式
       式:[納期]<Date() And [点滅用]
    

    これでタイマーごとに条件付き書式が反映される/されないを繰り返すので点滅してるように見えると思います

    コントロールがチェックボックス一つで済む(位置・表示不問)なのでこっちのほうが楽そうです。点滅させたいコントロールが多いなら断然ですね


    hirotonが条件付き書式を好きでないのはスクロールバーを掴んでいると反映されないからという理由があったりします