テキストボックスに透かし文字を表示する

 フォーム上のテキストボックスが未入力(値がNull)のときに色の薄い文字列を表示させ、入力時にはそれが消えるようにするというものです。プレースホルダなどとも呼ばれます。
 Accessのフォーム上ではあまり馴染みがないかもしれませんが、実現は容易ですので以下に例を示します。
 なお、既出の記事「未入力のフィールドに代わりの文字列を表示する」等に含まれる内容ですが、有用な実践例なので別個の記事としました。

f:id:accs2014:20180512012252p:plain:right:w600

 さて、フォームにある連結テキストボックス「出身地」にこの設定をしてみます。
 まずプロパティを開き、書式欄に次のように入力します。


@;"市区町村まで入力"

「@」は値(文字列)が入力されたときにそのまま表示させるもので、セミコロンの後の「市区町村まで入力」は値がNullのときに表示される文字列(表示されるだけでテキストボックスの値はもちろんNull)です。

なお、テキストボックスに入る値が数値型の場合は上記の文字列を

0;-0;0;"cm単位で入力"

などとします。

また、日付型の場合は

yyyy/mm/dd;;;"年月日を入力"

などとしますが、日付型の場合は値を入力するときに文字が自動的には消えてくれず、透かし文字というよりはただの既定値のような感じになります。ご注意ください。


f:id:accs2014:20180512012248p:plain:right:w600

 次に、このテキストボックスに条件付き書式を設定します。
 まず最初に、フォーカスがあるときには通常の濃い文字色になるよう設定します。
 次に、値がNullであるときに薄い文字色(この場合グレー)になるよう設定します(設定中、「フィールドの値」ではなく「式」を選んでその右に「IsNull([出身地])=True」と入力するのがポイントです)。

 以上で設定は終了です。なお、最初の設定がないと入力中の文字色もグレーになってしまいます。


f:id:accs2014:20180512012245p:plain:right:w300

 フォームビューでの新規レコードの様子です。
 テキストボックス「出身地」にフォーカスが当たると表示されている文字列は消えます。そして入力中の文字はきちんと濃い文字色で表示されます。


f:id:accs2014:20180512012242p:plain:right:w300

 ちなみにこちらが入力済みのレコードの様子です。
 めでたしめでたし。