TListBox

アイテムを追加する

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 プロパティは、リストボックスを水平方向にスクロールさせることなく、 表示できる列数を指定します。

デフォルトでは 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