VB6のコンボボックスで、以下のように項目の追加をしています。
With Combo1
.style = 2
.Clear
.AddItem "AAA"
.ItemData(.NewIndex) = 0
.AddItem "BBB"
.ItemData(.NewIndex) = 1
End With
Formを開いたときにlistindexが0の値を自動で選択するようになっています。
このコンボボックスで、listindex = -1をユーザー側が選択できるようにすることはできるのでしょうか?
宜しくお願いします。
シー さん こんにちは。
私は良く、
------------------------------------------
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyBack Then
Combo1.ListIndex = -1
End If
End Sub
------------------------------------------
こういうコードを書いて「BackSpaceでクリアです」としますけど・・・
'出来ないと思いますが、
意図が良くわかりませんが、単に、
.AddItem "AAA"
.ItemData(.NewIndex) = 0
.AddItem "BBB"
.ItemData(.NewIndex) = 1
.AddItem "選択なし"
.ItemData(.NewIndex) = -1
Me.Combo1.ItemData(Me.Combo1.ListIndex) '選択なしを選んだら -1
のように使うのではダメなのでしょうか?
大吉末吉さん、もげさんありがとうございます。
書くのを忘れてしまって申し訳ないのですが、
ドロップダウンリストの一番上に"選択無し"を追加して選べるようにできたら
良いと思っております。
そこでもげさんに書いていただいたコードなのですが、
.AddItem "選択なし"
.ItemData(.NewIndex) = -1
.AddItem "AAA"
.ItemData(.NewIndex) = 0
.AddItem "BBB"
.ItemData(.NewIndex) = 1
と書いたところ、"選択なし"のListIndexが0に、"AAA"のListIndexが1に
なっているのを確認しました。
やはりListIndex = -1を直に選択できるようにはできないのでしょうか。
そういう意味ですが。
なら、「できません」ですね。
ItemDataならともかく、ListIndexの値は、
「-1」何も選択されていない状態。
「0」1番目の項目が選択されている。
「1」2番目の項目が選択されている。
・・・
で、固定です。
「ItemData」を使用するか、『「ListIndex-1」の値を使用する(読み替える)』とかしてください。
.AddItem "選択なし"
.ItemData(.NewIndex) = -1
.AddItem "AAA"
.ItemData(.NewIndex) = 0
.AddItem "BBB"
.ItemData(.NewIndex) = 1
.Text = "選択なし"
で初期表示状態が「選択なし」
>ドロップダウンリストの一番上に"選択無し"を追加して選べるようにできたら
>良いと思っております。
を満たしていると思いますが、いかがでしょう?
ListIndex = -1 にこだわる理由を読み損ねているかもしれませんので、
適宜、意図を補足いただければと思いますが。
返信ありがとうございます。
このコンボボックスはたくさんのデータが追加されるようになっており、
データベースのマスタとリンクしていて、
更に、Combo2、Combo3といくつか設置されております。
初めて書いた未熟なプログラムのため、後から修正する時の事を考慮しておらず、
ListIndex = 0 に""を追加した場合、全てのIndexを振りなおさなければならない状態です。
そこで、ListIndex = -1を選択できたらと考えました。
ですが、やはりそれは不可能のようですので、
お二人に書いて頂いたコードを参考に
「-1」以外で"選択無し"の項目を作成し
それが選択されたら
Combo1.ListIndex = -1
となるようにコードを書いてみる事にします。
大変勉強になりました。
ありがとうございました。
ツイート | ![]() |