Accessのフォームでレコード移動するとラベルのテキストが太くなるという謎の症状

2019年8月21日Form

Bug where label text becomes bold when moving records in Access form

「タイトルの症状が発生します、対象法はないでしょうか。」という質問が当方が運営する掲示板でありました。

症状の出るサンプルファイルを送付してもらって症状を確認しました。

これはバグと言っていいでしょう。この症状の発生する条件、そして、その対処法について紹介します。

掲示板での質問から原因の特定までの経緯

下記のような質問がありました。

掲示板で添付された画像をみると確かに一部のラベルが太字になっているようです。質問者さんに確認しましたが、太字になっているものとなっていないもののプロパティ設定に特に違いはないようです。また、マクロやイベントプロシージャでラベルの設定を変更するようなこともしていないということです。

私自身、そのような経験がないし、原因の想像がつかないので、症状の出るファイルを送付してもらいました。このような場合は、実物をみないと原因特定は難しいです。

さて、ファイルを起動してフォームを開いてみると確かに症状が確認できました。 イベントプロシージャではレコード移動だけで原因となるような処理はありません。

ラベルのフォント名が「HGゴシックM」になっていたので規定値の「MS ゴシック」に変更てしてみました。すると症状はでなくなりました。

他のフォントだと、どうだろうか、ということで、私がよく使う「Meiryo UI」にしてみると症状が出ました。いろいろ試してみるとアンチエイリアスが有効なフォントだと発生するようです。

MS ゴシック」にすれば解決としたいところですが、アンチエイリアスが効かないフォントは汚いのでできれは避けたいところです。また、私が普段「Meiryo UI」(アンチエイリアス有効なフォントです)をよく使っているのですが、同様の症状を経験したことがないのでどこかに原因があるはずです。

原因の特定と対処法

落ち着いてフォームをよく観察してみると項目毎にグループ化するために各コントロールを四角形コントロールで囲んでいます。

ひょっとするとと思い当たり、四角形コントロールを選択して右クリックして[位置]-[最背面へ移動]をクリックしました。すると見事に症状は発生しなくなりました。

先にコントロールを配置しておいて、あとから四角形コントロールを配置したために、四角形コントロールが他のコントロールより前面になっていたのでしょう。

発生条件

症状の発生条件としては、下記の2点のようです。

  • ラベルのフォントがアンチエイリアスが有効なフォントに設定してある。
  • 四角形コントロールが前面に配置してある(四角形コントロールの背景スタイルは透明)。

ただ、上記の条件に当てはまっても、発症する場合と発症しない場合があるようです。 四角形コントロールが前面にあると、背景スタイルが透明にしてあっても、背面のコントロールの描画になんらかの影響を与えるのだと思われます。

対処法

四角形コントロールの位置を最背面へ移動させる。

具体的な方法は、 四角形コントロールを選択して右クリックして[位置]-[最背面へ移動]をクリック する。

上記の方法で、アンチエイリアスが有効なフォントでも症状は発生しなくなります。

まとめ

めったに発生しない症状だと思いますか、もし、同様の症状が発生したら、この記事を思い出して、上記の対処法を試してみてください。