PICマイコンを使って測定ツールを作ってみよう(5) ―― ネットワークとA-Dコンバータを利用してさまざまな場所の温度を測る
●コンボボックス・オブジェクトを作ってみよう
前回,説明したオブジェクトはテキストボックス・オブジェクトでした.今回は,コンボボックス・オブジェクトの使い方を説明します.
コンボボックス・オブジェクトは,テキストボックス・オブジェクトにプルダウン・メニューによる選択入力を行える機能が追加されています.
右側の下向き三角のボタンをクリックすると,プルダウン・メニューが開きます.何番目の項目を選んだかは,ListIndexというプロパティで見ることができます.また,項目(アイテム)を追加するには,AddItemというメソッドを使います.何個のアイテムが登録されているかは,ListCountというプロパティを見れば分かります.Form_Load関数で必要なアイテムを設定しておき,実行時にアイテムを選択し,いろいろな設定に利用する手法が一般的です.
今回はスレーブIDの選択にコンボボックス・オブジェクトを使っています.Combo1でアイテム(スレーブID)が選択されると,クリックされているわけですから,Combo1_Clickイベントが起こり,そのときID配列番号にListIndex+1が代入されます.SA(1),SA(2),SA(3)という配列メンバにそれぞれ,スレーブ#1,#2,#3のID番号が割りつけられています.
今回は単純に1,2,3という順番で割り付けているので,特に再変換する必要はありません.そのままListIndex値を各スレーブIDにしても動作します.ただし,スレーブIDは,実際に利用する際に何番になるのか分からないので,こういう方法が一番変更に強いと思います.
ツールボックスからコンボボックスを選択してFormに貼り付けます(図4).コンボボックス・オブジェクトでは,表示内容はTextというプロパティに保存されますが,直接,このテキストを変更することも可能です.基本的にテキストボックスの属性を受け継いでいますが,MultiLineプロパティはありません.
図4 コンボボックス・オブジェクトを作成する
コンボボックスは,プログラム実行時に入力が行えます.しかし,自動的にプルダウン・メニューに追加することはできません.あくまでもコードの中でAddItemを行わないと,プルダウン・メニューのリストに追加できません.ただし,初期値としてListの中にアイテムを登録しておくことができます.ここでは図5のようにアイテムを登録します.
図5 コンボボックス・オブジェクトのリスト入力
これでRUNすると,コンボボックスだけ表示されたFormが表示されます.コンボボックスの逆三角のボタンをクリックするとプルダウン・メニューが現れて,さきほど入力したアイテムが表示されます(図6).いずれかのアイテムをクリックすると,そのアイテムが選択され,プルダウン・メニューは閉じて,コンボボックス内にアイテムが表示されます.
図6 コンボボックスの実行例
実際のプログラムでは,選択されたアイテムによって処理を選んだり,データベースに書き出したりします.それには,実際にどのアイテムが選択されたかをプログラムに知らせる必要があります.簡単なコードを作り,どうやればできるかを試してみましょう.
Form上のコンボボックスをダブルクリックすると,コード・ウィンドウが開き,Combo1_changeイベントの処理関数が自動的に作られます.ここではこれは使わず,Combo1_clickという関数を作ります.図7のコードを入力します.
図7 コンボボックスのコード例
選択されたアイテムは,Combo1.textに入れられます.表示したい場合は,これを使います.また,何番のアイテムが選択されたかは,Combo1.ListIndexの中に入れられます.この二つの値を,それぞれラベルに表示するようにします.
RUNするとコンボボックスが現れるので,先ほどと同じように逆三角のボタンをクリックして,プルダウン・メニューを表示します.いずれかのアイテム(ここでは4番目のアイテムのDragon)を選択します.すると,それぞれのラベルにアイテムと番号が表示されます(図8).番号は0が最初なので,実際には1少ない番号になります.
図8 コンボボックスのコード例の実行結果
ここではアイテムの登録は,プロパティウィンドウから直接Listに入力しましたが,コードの中でも登録できます.AddItemを実行すると,順番にアイテムが登録されていきます.順番を飛び越して登録することはできません.