1

リストボックス間でアイテムを比較する方法を知りたいです。メイン フォームには 2 つのリストボックスがあります。クリックイベントで1番目から2番目にアイテムを追加したいのですが、使用すると2番目のリストボックスに同じアイテムが乗算されます。「ファイルは既に存在します」を解決するためのアイデアはありますか?

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i := ListBox1.Items.Count - 1 downto 0 do
    if ListBox1.Selected[i] then                       
      ListBox2.Items.Add(ListBox1.Items.Strings[i]);
end;
4

1 に答える 1

5

単一選択リストボックスを取得した場合1:

if Listbox2.Items.IndexOf(Listbox1.Items[Listbox1.ItemIndex]) = -1 then
begin
  // Doesn't exist yet. Safe to add
end;

複数選択の場合(コードが暗示しているようです):

for i := 0 to ListBox1.Items.Count - 1 do
  if (ListBox1.Selected[i] and (ListBox2.Items.IndexOf(ListBox1.Items[i]) = -1) then                       
    ListBox2.Items.Add(ListBox1.Items[i]);

後者はシングルセレクトでも機能すると思います。

于 2012-10-28T20:04:20.893 に答える