ListBoxで複数の項目を選択したいと思っています。
あるリストに対応した、ListBoxの項目を選択状態にしたいのですが、
Selected[x]にTrueを代入しても選択状態になってくれません。
ちなみに、MaltiSelectはTrueです。
気になっているのは、
Trueを設定した後にShowModalで表示をかけているのですが、
このときに、選択状態がクリアされているように見えます。
そういうものなのでしょうか。
もし、選択を実装するとなると、
onShowイベントで処理をしなくてはいけないのでしょうか。
ご教授お願いします。
追加
対象のListBoxがあるのは、制御側のFormと別のFormです。
制御側でFormをCreateして値を設定し、ShowModalで表示しようと思っています。
再現できません。
Delphi7で、
f := TForm2.Create(Self);
f.ListBox1.Items.add('A');
f.ListBox1.Items.add('B');
f.ListBox1.Items.add('C');
f.ListBox1.Items.add('D');
f.ListBox1.Items.add('E');
f.ListBox1.Selected[0] := True;
f.ListBox1.Selected[1] := False;
f.ListBox1.Selected[2] := True;
f.ListBox1.Selected[3] := False;
f.ListBox1.Selected[4] := True;
f.ShowModal;
としてやると、ちゃんと0,2,4が選択された状態でShowModalされます。
最小限のコードで再現できますか?
できなければ、他に原因があるかと思います。
# 例えばOnShowでリストボックスを初期化しているとか
フォームのimplementation句の上に、そのフォーム用のグローバル変数が定義されますが、
自動生成ではなく、自身でインスタンスを作成しているのであれば、上記変数を
削除してみてください。
新しく、ListBoxが載ったFormと、処理を実行するボタンの載ったFormを作成しました。
で、にしのさんのコードをそのまま載せてみました。
Form2のListBoxのMaltiSelectはTrueにしています。
実行すると、"E"の項目のみ点線で囲まれた状態になっています。
(青く選択状態になっていません)
ちなみに、SelectAllでも青くなりません。
showで開くと、選択された状態にはなります。
当方、Delphi2005ですがバグと考えた方がいいのでしょうか。
MaltiSelectをTrueにすると選択されないようです。
Falseのままだと選択されます。
MaltiSelectのShowModal時にのみ発生するようです。
ツイート | ![]() |