procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.Add('first'); ListBox1.Items.Add('second'); ListBox1.Items.Add('third'); end;
リストボックスのクリックされた項目(の文字列)を取得するには、ItemIndex プロパティと Items プロパティを使用します。
ItemIndex プロパティには、選択されたアイテムのインデックスが、Items プロパティには、リストボックスのアイテムが格納されています。
procedure TForm1.ListBox1Click(Sender: TObject); var index: Integer; begin index := ListBox1.ItemIndex; Label1.Caption := ListBox1.Items[index]; end;
Columns プロパティは、リストボックスを水平方向にスクロールさせることなく、 表示できる列数を指定します。
デフォルトでは Columns プロパティには 0 がセットされています。この場合、 リストボックスは、1 列で表示され、垂直方向にだけスクロール可能です。
Columns プロパティに 0 と 1 をセットした場合の違いは、 前者がスクロールバーを垂直方向に表示されるのに対し、 後者がスクロールバーを水平方向に表示されることです。
procedure TForm1.Button2Click(Sender: TObject); begin // 水平方向にスクロールすることなく表示される列数を 2 にセット ListBox1.Columns := 2; end;
procedure TForm1.Button3Click(Sender: TObject); begin // 3 番目のアイテムを選択する // ItemIndex = 0 が 1 番目のアイテムであることに注意 ListBox1.ItemIndex := 2; end;
複数のアイテムを選択するには、MultiSelect プロパティを True にセットします。 Selected プロパティを使用すると、特定の項目が選択されているかどうかを取得できますので、選択されている全てのアイテムの一覧を表示する際には、 以下のようなコードで実現できます。
procedure TForm1.FormCreate(Sender: TObject); begin ListBox1.Items.Add('one'); ListBox1.Items.Add('two'); ListBox1.Items.Add('three'); ListBox1.Items.Add('four'); ListBox1.Items.Add('five'); ListBox1.Items.Add('six'); ListBox1.Items.Add('seven'); ListBox1.MultiSelect := true; // 複数選択できるようにする end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin for i := 0 to ListBox1.Count-1 do begin if ListBox1.Selected[i] then // 選択状態であるなら ListBox2.Items.Add(ListBox1.Items[i]); end; end;
なお、MultiSelect プロパティが ture の場合に複数のアイテムが選択されている場合、 ItemIndex プロパティの値は、最後に選択されたアイテムのインデックスが格納されています。
もし、ExtendedSelect プロパティが true であるなら、[Shift] キーを押しながら、 別のアイテムを選択することで、その 2 つの項目間にある全てのアイテムが選択されることになります。もし ExtendedSelect プロパティが false であるなら、[Shift] キーを押さずとも、クリックされるたびに、そのアイテムが選択(選択されていれば、解除)されます(※MultiSelect プロパティが false であるなら、ExtendedSelect プロパティの設定は無効となります)。
ExtendedSelect プロパティは、デフォルトでは true にセットされています。
up
Last update: 2003/4/21