リスト選択時ラベルの表示を正しくするには?

解決


もっちゃん  2008-08-28 19:37:02  No: 140313  IP: 192.*.*.*

初めまして。
VB6で初歩的なプログラムを練習しているのですが、
詰まってしまったので質問させて頂きます。

リストボックス1とラベル1使ってます。
---------------------------------------
Option Explicit
Dim kudamono As String

Private Sub Form_Load()
    List1.AddItem "青森"
    List1.AddItem "愛媛"
    List1.AddItem "山梨"
End Sub

Private Sub List1_Click()
    Select Case List1.ListIndex
    Case 0
         kudamono = "りんご"
    Case 1
         kudamono = "みかん"
    Case 2
         kudamono = "ぶどう"
    End Select
    Label1.Caption = List1.Text & "の名産は" & kudamono & "です。"
End Sub
------------------------------------------
リストをクリックすると『○○の名産は××です。』と表示されます。
問題はこれに追加と削除のコマンドボタンを追加するというプログラムです。

追加のプログラムは出来たのですが、リスト1をクリックすると
『○○』は問題なく表示されるのですが『××』が表示しません。

ヒントとして果物をリストボックスに入れて都道府県名と同じ場所を見れば良いと
聞いたのですが、どうしても上手くいきません。

どの様にすれば宜しいでしょうか。

編集 削除
特攻隊長まるるう  2008-08-28 19:55:19  No: 140314  IP: 192.*.*.*

そもそも果物をリストボックスに入れてないじゃない?
入れれば?

編集 削除
もっちゃん  2008-08-28 23:59:52  No: 140315  IP: 192.*.*.*

いや、list1とlist2で県名と果物別でリストボックスは作れたのですが、
List同士の関連付けはどうやるのかなと。

Label1.Caption = List1.Text & "の名産は" & kudamono & "です。"

ここの部分をどうしたら良いか分からないのです。

編集 削除
8月  2008-08-29 08:06:57  No: 140316  IP: 192.*.*.*

ListBoxに関して
選択した項目の位置を取得する          List1.Listindex
選択した項目の文字列を取得する        List1.List(インデックスの値)
                                        もしくは
                                      List1.List(List1.Listindex)

下記では如何ですか?
List1 と List2  が同期(産地と果物があっているなら)しているなら
List1 をクリックした時の位置を取得して、その位置の List2 の文字列を
取得すれば良いですよね。

Label1.Caption = List1.List(List1.Listindex) & "の名産は" & List2.List(List1.Listindex) & "です。"

編集 削除
 2008-08-29 08:32:16  No: 140317  IP: 192.*.*.*

追加・削除するなら、果物も動的に変更できるようにしないとダメ
更に8月氏の言う通り、2つの情報は同期していないとダメ
なら、8月氏のようにList2を(非表示で?)定義して
その中で果物の情報をやり繰りするか、
Collectionなどを使って、そこで管理するか等しないとダメかと
ちなみにCollection使うなら
・Dim coll as New Collection など、Newで生成しないと
  Collectionは使えない
・CollectionのIndexは1からで、途中をReemoveするとIndexは詰められるみたい
…あたりに気をつけて

編集 削除
もっちゃん  2008-08-30 12:57:40  No: 140318  IP: 192.*.*.*

>>8月さん
お返事遅れてすみません。

>Label1.Caption = List1.List(List1.Listindex) & "の名産は" & List2.List(List1.Listindex) & "です。"

この書き方で無事表示できました。

>>あさん
List2は非表示で隠してみました。

御二方ありがとうございました。

編集 削除