どなたかアドバイスをお願いします!
リストボックスを複数選択できるようにするには、フォームの画面でStyleプロパティやMultiSelectプロパティを変えますよね?
それを、コードで書くことってできないのでしょうか・・・。
List1.Style = VbButtonGraphical
や、
List1.MultiSelect = 1(または2)
と書いても、コンパイルエラーで「値の取得のみ可能なプロパティに値を設定することはできません」って出てしまいます。
ってことは・・・できないってことですか?><。
If文で条件を指定して、複数選択可・不可にしたいです!
情報があれば教えてください!!
あ、ちなみにVB6です^^
Spy++でMultiSelectに1をセットした時と2をセットした時の
リストボックスのウィンドウスタイルの変化をみると
1のとき&H89の属性
2のとき&H881の属性
が追加されていました。
それぞれの定数が何を意味するまでは調べていませんが
GetWindowLongで属性を取得し、その値に上記値をORしてから
SetWindowLongで属性をセットしてやれば、MultiSelect
プロパティに1または2をセットした時と同じ動きになるようです。
その後の動作までは検証していませんので、不具合がでるようでしたら
止めておくほうが無難です。
簡単にするならリストボックスを2つ用意し、それぞれに単一選択
と複数選択の属性を与えVisibleプロパティで制御する方がVBとして
は無難な気がします。
>1のとき&H89の属性
>2のとき&H881の属性
>
>が追加されていました。
>それぞれの定数が何を意味するまでは調べていませんが
>GetWindowLongで属性を取得し、その値に上記値をORしてから
>SetWindowLongで属性をセットしてやれば、MultiSelect
>プロパティに1または2をセットした時と同じ動きになるようです。
すみません、気のせいでした。
ウィンドウスタイルを変更しても動作は変わりませんでしたので
上記は無視して下さい。
>>>>030さま
>簡単にするならリストボックスを2つ用意し、それぞれに単一選択
>と複数選択の属性を与えVisibleプロパティで制御する方がVBとして
>は無難な気がします。
これはありかもですね!
ですが、リストボックスが一つではなくて7つありまして、配列にしてあるんですよ(^^;
そうすると7×2で14個のリストボックス・・・うーん。
もうちょっと方法探してみます^^
何か知ってる方、ぜひ教えてください!!
残念ながら、生成時にしか設定できない項目なので、変更できません。
複数選択用と単一選択用の2種類のListBoxを用意し、切り替えて使うか、
もしくは、デザイン時には複数選択用のコントロールにしておき、
If 単一選択 Then
For L = 0 To List1.ListCount - 1
List1.Selected(L) = CBool(List1.ListIndex = L)
Next
End If
などとして、単一選択であるかのように見せかける事で回避してみてください。
>>>>魔界の仮面弁士さま
んー、やっぱりレイアウトの時しかできないですか(^^;
わかりました!
勉強になりました^^
単一選択であるかのように見せかける作戦で、ちょっとやってみます^^
ありがとうございました♪
アドバイスをくれた方、調べてくれた方、みなさんありがとうございました!!
ツイート | ![]() |