AIで普通の動画を3D動画に変換する
Miku-nical「みくにかる」〜Program館〜
Miku-nical「みくにかる」
Miku-nical「みくにかる」〜Program館
Miku-nical「みくにかる」
=SiteMenu=

図書紹介
-Books-

OSの話
-Windows/Linux-
プログラム
-Programming-
壁紙集
-Wall Paper.-
= プログラムの素「VisualBasic編」=

KnowHow集などとだいそれたものではありません
自分がプログラムをする上で得た知識などをまとめておこうと思っています

009.ComboBoxコントロール

データを選択するのに便利なコントロールで、よく見かけるものです。
右のようなやつです。
プログラム中では、

ComboBox.List(ComboBox.ListIndex)

で、現在選択/表示されている文字列を取得する事が出来ます。
"ComboBox.List()"は選択文字のリスト(一覧)を表し、
"ComboBox.ListIndex"は現在選択されている場所(-1の時は未選択,0〜の値)を意味しています。

ほとんどの場合は、上記のようにして選択された情報(主に"ComboBox.ListIndex"の値)を使用することになるのでしょうが、"ComboBox"には文字リストに対応する数値データ用のリストとして、"ComboBox.ItemData()"が用意されています。
同様に、

ComboBox.ItemData(ComboBox.ListIndex)

とする事で、現在選択/表示されている情報に対応する"ItemData()"の値を取得する事が出来ます。

これは、下記のような場合に大変便利となります。

表1)のように、"ComboBox"に値を割り付けていたとします(ItemDataの値は初期値=0です)。この時、プログラム中では" "ComboBox.ListIndex"の値によって処理を行う必要があります。
例えば、選択肢5を選んでいる時には、4(="ComboBox.ListIndex"の値)を使う事になります。
ところが、"選択肢4"が不要になったとする(表2)と、同じ選択肢5を選んだにも関わらず、プログラム中では3の値を使う必要があり、プログラムの変更が必要となるでしょう(変更量は内容によっても変わりますが...)。

ListIndexを使う場合)
表1)
ListIndex List ItemData
0 選択肢1 0
1 選択肢2 0
2 選択肢3 0
3 選択肢4 0
4 選択肢5 0
5 選択肢6 0
表2)
ListIndex List ItemData
0 選択肢1 0
1 選択肢2 0
2 選択肢3 0
3 選択肢5 0
4 選択肢6 0
5 選択肢7 0

他方、ItemDataを使うと各選択肢にそれぞれItemDataの値を割り付けます。
こうすることで、選択肢とは関係なく一意に選択された情報とItemDataの値を関連付けられることになりますので、先のように"選択肢4"が削除された場合でもプログラム中で使用する値、105(="ComboBox.ItemData(ComboBox.ListIndex)"の値)は変わりませんので、プログラムの変更は不要となります。

ItemDataを使う場合)
表3)
ListIndex List ItemData
0 選択肢1 101
1 選択肢2 102
2 選択肢3 103
3 選択肢4 104
4 選択肢5 105
5 選択肢6 106
表4)
ListIndex List ItemData
0 選択肢1 101
1 選択肢2 102
2 選択肢3 103
3 選択肢5 105
4 選択肢6 106
5 選択肢7 107

"ItemData()"プロパティは使い方によっては大変便利ですし、プログラムのメンテナンス性も向上させます。

#「C++Builder/Delphi」の"ComboBoxコントロール"には"ItemData()"はありません。いつもこれだけは欲しいと思ってしまいます(^^;

尚、ここに書かれている方法を実際に行っての問題については一切関知しませんので、各自の責任にて行って下さい
ご意見ご感想はこちらまで <mikunical@mbp.nifty.com>
--