2012-10-28 5 views
1

목록 상자간에 항목을 비교하는 방법을 알고 싶습니다. 내 주요 양식에는 두 개의 목록 상자가 있습니다. 클릭 이벤트로 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 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

관련 문제