Microsoft Access 掲示板

オブジェクトを隠すためのテキストボックス色を背景色にあわせたい

4 コメント
views
4 フォロー

帳票フォームでレコード毎にテキストボックスの表示/非表示を切り換えたい

こちらを参考にさせていただき、該当のボタンやチェックボックスを非表示にすることができました。
ありがとうございます。
ところで、現在自分の詳細フォームの背景がグレーと白の交互になっております。
白一色にしようかとも検討したのですが、交互の方が見やすいかなと感じています。
非表示にする際のテキストボックスの前景色を、交互の色にあわせることはできますでしょうか。

ニンジャ
作成: 2020/09/09 (水) 12:12:06
通報 ...
1

まずは、下記のリンク先の関数FormRecNoをコピーして標準モジュールに貼り付ける。

B.WH |AC : 帳票フォームで表示順に連番を付ける

消したいフィールドを覆っているテキストボックス(リンク先だと txtHideB)のプロパティを下記のように変更する。

コントロールソース
=IIf(([FieldA] Like "[!A-Z]" Or [FieldA] Is Null) And [FormRecNo] Mod 2=0,"gggg","")

前景色 グレー

次にこのテキストボックスをコピーして、詳細セクションに貼り付けてから、移動させて txtHideB の上に重ねます。
プロパティを下記のように設定します。

コントロールソース
=IIf(([FieldA] Like "[!A-Z]" Or [FieldA] Is Null) And [FormRecNo] Mod 2=1,"gggg","")
前景色 白
名前 txtHideB2

このテキストボックスのフォーカス取得時のイベントプロシージャを下記のように記述します。

Private Sub txtHideB2_Enter()
    If Me.txtHideB = "" Then
        Me.FieldB.SetFocus
    Else
        Screen.PreviousControl.SetFocus
    End If
End Sub

以上でどうでしょうか。
実際に試してはいません。
FormRecNo関数は重い処理でので、実用的かどうか不明です。

2
ニンジャ 2020/09/24 (木) 15:22:48 0029a@1c915

以前教えていただき、ありがとうございました。
こちらの件、やはり重たいので悩んでいます。

ある条件を満たした際、チェックボックス(やボタン)を「使えない」とわかるようにしたいのですが、軽く対処できる方法はありませんでしょうか。
※ボタンはまだあまり調べていないのですが、チェックボックスは調べても方法が見つからず…

3
ニンジャ 2020/09/25 (金) 00:58:33 0029a@1c915

ボタンについても調べたり実行していましたが、
帳票のためロックをかけても
全てのレコードにかかってしまうという問題があるのですね・・・
やはりこちらを参考に作成するしかないのですよね。

帳票フォームでレコード毎にテキストボックスの表示/非表示を切り換えたい

4
hiroton 2020/09/25 (金) 11:36:04 5878c@f966d

コントロールが表示されてもいいのならテキストボックスでそれっぽく代用するとかですかね
大きいチェックボックスを作る(もう一度学ぶMS-Accessさん)

見た目に使ってるのがテキストボックスなので条件付き書式で見た目を変えられます
「見た目使用不可なのにクリックしてしまった」のは更新前処理でつかんでCancelという感じで

ただ、ボタンっぽいテキストボックスは非常に困難そうでした
参考:Yahoo知恵袋

パッと見ボタンですが、ボタン的な動作はありません。マウスを乗せるとハイパーリンク機能でマウスカーソルの形が変わるだけです
リンク先では、条件付き書式で前景色を変えていましたが、コントロールソースでも=IIF(条件,"","標題")とするといいのかなと思いました


代案
ボタンにボタンっぽいテキストボックスを被せます
テキストボックスは条件付き書式やコントロールソースで使用不可の見た目を設定します

テキストボックスのマウスクリック時で、ボタンが使用可能であればSetFocusしつつ、WindowsAPIで再度マウス押し下げイベントを送り込みます
画面上の任意の位置をクリックするVBAコード(VBA(マクロ)で仕事を楽しく効率化さん)

テーマの使用をしたボタンは真似できないのとボタンのポイント時の強調表示ができないあたりがパッと思いつく違いです