Prevent duplicate items in list box and combo box in Inno Setup?

笑着哭i 提交于 2020-01-01 19:24:27

问题


I receive an XML file from internet (values ​from XML ​may vary, cause there are currencies). And then I load it to a list box 1. A user can add items to to list box 2 with some buttons (one by one, all, delete etc). So I want to prevent duplicates. I can't find any way to do this.

My list boxes:

Here is my code (for XML parsing part, see How to read multiple XML nodes? (Inno Setup)):

XMLNodeList := XMLDocument.SelectNodes('//listaPaises/item');
for Index := 0 to XMLNodeList.length - 1 do
begin
  XMLNode := XMLNodeList.item[Index];

  { Add country }
  comboBoxPais.Items.Add(XMLNode.SelectSingleNode('name').Text); 

  { Add currency }
  listBoxMonedasDisponibles.Items.Add(XMLNode.SelectSingleNode('suggestedCurrency').Text);

  listBoxMonedasDisponibles.ItemIndex := 0;
  comboBoxPais.ItemIndex := 0;
end;

回答1:


Both TComboBox.Items and TListBox.Items are of type TStrings.

Use TStrings.IndexOf, to test if a given string is already present. It returns a negative number (-1), if the string is not present.

{ Add S only, if not present already }
if comboBox.Items.IndexOf(S) < 0 then 
  comboBox.Items.Add(S);


来源:https://stackoverflow.com/questions/43984621/prevent-duplicate-items-in-list-box-and-combo-box-in-inno-setup

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!