2012-10-28 5 views
1

Я хочу знать, как сравнивать элементы между списками. В моей основной форме есть два списка. Я хочу добавить элемент с 1 по 2 с событием клика, но при его использовании один и тот же элемент будет умножаться на 2-й список. Любая идея решить "Файл уже существует"?Элементы Delphi сравниваются между 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], если ListBox2.Items.IndexOf (ListBox1.Items [i]) = -1, тогда 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 Спасибо Алистер! – Trevor

Смежные вопросы