2012-10-28 40 views
1

我想知道如何比較列表框之間的項目。在我的主窗體上有兩個列表框。我想用第一個到第二個項目添加一個點擊事件,但使用它時,同一個項目會在第二個列表框中相乘。任何想法解決「文件已存在」德爾福項目比較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; 
+1

很難猜出你在問什麼,但是如果你想將你在第一個列表框中選擇的項目添加到第二個列表框,只有當那個項目不在那裏時,試着使用'.. .if ListBox1.Selected [i] then if ListBox2.Items.IndexOf(ListBox1.Items [i])= -1 then ListBox2.Items.Add(ListBox1.Items [i]);'。 – TLama

+1

我做了一個關於這個問題的簡短視頻http://youtu.be/m7uxqFQDSSI,其中我們創建了一個簡單的Delphi應用程序來演示問題以及接受的答案是如何工作的。 – Alister

回答

5

如果你有一個單選ListBox1中:

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]); 

後者將用於單工作我想也是。

+0

非常感謝您的回答! – Steve88

+0

這是一個youtube視頻回答這個問題。 http://www.youtube.com/watch?v=m7uxqFQDSSI&feature=g-u-u謝謝Alister! – Trevor