コンボボックスで選択無しを選択できるようにするには?

解決


シー  2006-12-08 23:41:02  No: 134503

VB6のコンボボックスで、以下のように項目の追加をしています。

 With Combo1
      .style = 2
      .Clear
      .AddItem "AAA"
      .ItemData(.NewIndex) = 0
      .AddItem "BBB"
      .ItemData(.NewIndex) = 1
 End With

Formを開いたときにlistindexが0の値を自動で選択するようになっています。
このコンボボックスで、listindex = -1をユーザー側が選択できるようにすることはできるのでしょうか?

宜しくお願いします。


大吉末吉  2006-12-08 23:55:48  No: 134504

シー さん  こんにちは。

私は良く、
------------------------------------------
Private Sub Combo1_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyBack Then
        Combo1.ListIndex = -1
    End If
End Sub
------------------------------------------
こういうコードを書いて「BackSpaceでクリアです」としますけど・・・


もげ  2006-12-08 23:56:30  No: 134505

'出来ないと思いますが、

意図が良くわかりませんが、単に、

      .AddItem "AAA"
      .ItemData(.NewIndex) = 0
      .AddItem "BBB"
      .ItemData(.NewIndex) = 1
      .AddItem "選択なし"
      .ItemData(.NewIndex) = -1

Me.Combo1.ItemData(Me.Combo1.ListIndex) '選択なしを選んだら  -1
のように使うのではダメなのでしょうか?


しー  2006-12-09 00:16:52  No: 134506

大吉末吉さん、もげさんありがとうございます。

書くのを忘れてしまって申し訳ないのですが、
ドロップダウンリストの一番上に"選択無し"を追加して選べるようにできたら
良いと思っております。

そこでもげさんに書いていただいたコードなのですが、
      .AddItem "選択なし"
      .ItemData(.NewIndex) = -1
      .AddItem "AAA"
      .ItemData(.NewIndex) = 0
      .AddItem "BBB"
      .ItemData(.NewIndex) = 1
と書いたところ、"選択なし"のListIndexが0に、"AAA"のListIndexが1に
なっているのを確認しました。
やはりListIndex = -1を直に選択できるようにはできないのでしょうか。


大吉末吉  2006-12-09 00:39:02  No: 134507

そういう意味ですが。
なら、「できません」ですね。

ItemDataならともかく、ListIndexの値は、
「-1」何も選択されていない状態。
「0」1番目の項目が選択されている。
「1」2番目の項目が選択されている。
・・・
で、固定です。

「ItemData」を使用するか、『「ListIndex-1」の値を使用する(読み替える)』とかしてください。


もげ  2006-12-09 00:39:54  No: 134508

.AddItem "選択なし"
      .ItemData(.NewIndex) = -1
      .AddItem "AAA"
      .ItemData(.NewIndex) = 0
      .AddItem "BBB"
      .ItemData(.NewIndex) = 1
      .Text = "選択なし"

で初期表示状態が「選択なし」

>ドロップダウンリストの一番上に"選択無し"を追加して選べるようにできたら
>良いと思っております。

を満たしていると思いますが、いかがでしょう?
ListIndex = -1  にこだわる理由を読み損ねているかもしれませんので、
適宜、意図を補足いただければと思いますが。


シー  2006-12-09 01:03:21  No: 134509

返信ありがとうございます。

このコンボボックスはたくさんのデータが追加されるようになっており、
データベースのマスタとリンクしていて、
更に、Combo2、Combo3といくつか設置されております。

初めて書いた未熟なプログラムのため、後から修正する時の事を考慮しておらず、
ListIndex = 0 に""を追加した場合、全てのIndexを振りなおさなければならない状態です。
そこで、ListIndex = -1を選択できたらと考えました。

ですが、やはりそれは不可能のようですので、
お二人に書いて頂いたコードを参考に
「-1」以外で"選択無し"の項目を作成し
それが選択されたら
Combo1.ListIndex = -1
となるようにコードを書いてみる事にします。

大変勉強になりました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加