在Inno Setup中从列表框传递到列表框时出错

时间:2017-05-25 18:11:07

标签: inno-setup pascalscript

我试图将从ListBox1留下的项目添加到ListBox2以防止重复,我从我的问题Prevent duplicate items in list box and combo box in Inno Setup?获得了代码(完美地逐个传递)并且我想要通过所有项目此时按下按钮“ >>”中(将ListBox1上留下的项目传递给ListBox2(没有克隆列表框))。 enter image description here

并在buttonClick上获取此信息 enter image description here

这是代码:

procedure botonDerechaTodos(Sender: TObject);
begin
  if (listBoxMonedasDisponibles.ItemIndex >= 0)then
    begin
      if listBoxMonedasSecundarias.Items.IndexOf(listBoxMonedasDisponibles.Items[listBoxMonedasDisponibles.ItemIndex]) < 0 then 
         listBoxMonedasSecundarias.Items.Add(listBoxMonedasDisponibles.Items[listBoxMonedasDisponibles.Items]);
         listBoxMonedasDisponibles.Items.Delete(listBoxMonedasDisponibles.Items);       
         comboBoxMonedaPrincipal.Items := listBoxMonedasSecundarias.Items;
         comboBoxMonedaPrincipal.ItemIndex := 0;
         listBoxMonedasSecundarias.ItemIndex := 0;               
    end;  
end;

1 个答案:

答案 0 :(得分:2)

您的代码包含错误。您正在传递Items而不是ItemIndex

你有

listBoxMonedasSecundarias.Items.Add(listBoxMonedasDisponibles.Items[listBoxMonedasDisponibles.Items]);

应该是

listBoxMonedasSecundarias.Items.Add(listBoxMonedasDisponibles.Items[listBoxMonedasDisponibles.ItemIndex]);

您在此处遇到类似错误:

listBoxMonedasDisponibles.Items.Delete(listBoxMonedasDisponibles.Items);   

应该是

listBoxMonedasDisponibles.Items.Delete(listBoxMonedasDisponibles.ItemIndex);   

在回答评论中提出的问题时,请使用AddStrings(我没有输入所有这些长变量名称):

ListBoxDest.Items.AddStrings(ListBoxSource.Items);
ListBoxSource.Items.Clear;