Accessのコンボボックスでボックス部の表示とリストの表示を異なるものにしたい
このような要望はあまりないと思いますが、リスト部分は記号+項目 表示にして、ボックス部分は項目だけを表示したいとか、リスト部分は階層をインデントで表現して、ボックスはインデントなしで表示させる、ということを実現する方法を紹介します。
元ネタ は下記の質問の回答です。
Microsoft Access 掲示板 イメージコンボボックスでフォントの大きさを変える方法 – zawazawa
リストは記号+項目、ボックスは項目だけ
下記の画像のようにリストの表示とボックス部の表示を異なるようしたい場合の対処法です。
リストのもとになるテーブルを下記のように作成します。
テーブル名 T_List_Mark
ID | アイテム | マーク |
---|---|---|
1 | アイテム1 | ☆ |
2 | アイテム2 | ★ |
3 | アイテム3 | ◎ |
4 | アイテム4 | 〇 |
5 | アイテム5 | △ |
コンボボックスのプロパティを下記のように設定します。
プロパティ | 設定値 |
---|---|
値集合ソース | SELECT T_List_Mark.ID, T_List_Mark.[アイテム], [マーク] & " " & [アイテム] AS 式1 FROM T_List_Mark; |
値集合タイプ | テーブル/クエリ |
連結列 | 1 |
列数 | 3 |
列幅 | 0cm;0.002cm |
これで、画像のようにリストはマーク付きのアイテム名で、ボックス部はアイテム名のみになります。また、格納される値(Value)は1列目のIDになります。
原理としては、ボックス部に表示されるのは、表示されている列の一番左の列になります。列幅が1列目は0cmで非表示なので、2列目が表示されます。リストには2列目と3列目が表示されるのですか、2列目は0.002cmなので人間の目には見えずに3列目のみ表示されているように見えます。
リスト部分は階層をインデントで表現
下記の画像のようにしたい場合の設定例です。
リスト用のテーブルは下記のようにします。
テーブル名 T_List_Indent
ID | アイテム | 階層 |
---|---|---|
1 | 親アイテム1 | 0 |
2 | 子アイテム1_1 | 1 |
3 | 孫アイテム1_1_1 | 2 |
4 | 親アイテム2 | 0 |
5 | 子アイテム2_1 | 1 |
コンボボックスのプロパティを下記のように設定します。
プロパティ | 設定値 |
---|---|
値集合ソース | SELECT [T_List_Indent].ID, [T_List_Indent].[アイテム], Space([階層]) & [アイテム] AS 式1 FROM T_List_Indent ORDER BY [T_List_Indent].ID; |
値集合タイプ | テーブル/クエリ |
連結列 | 1 |
列数 | 3 |
列幅 | 0cm;0.002cm |
Space([階層])
でインデント用のスペースを生成しています。
後の設定はマーク付きコンボボックスの設定とまったく同じです。
まとめ
コンボボックスの性質をうまく利用して実現しています。このテクニックを覚えておけば、他にもいろいろ応用が利くと思います。
ディスカッション
コメント一覧
まだ、コメントがありません