【问题标题】:Delphi items compare between 2 listboxesDelphi 项目比较 2 个列表框
【发布时间】:2012-10-28 16:04:13
【问题描述】:

我想知道如何比较列表框之间的项目。在我的主窗体上有两个列表框。我想通过单击事件将项目从第一个添加到第二个,但是当使用它时,相同的项目将在第二个列表框上成倍增加。有什么办法解决“文件已存在”

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;

【问题讨论】:

  • 很难猜出你在问什么,但如果你想将你在第一个列表框中选择的项目添加到第二个列表框中,只有当该项目不存在时,尝试使用...if ListBox1.Selected[i] then if ListBox2.Items.IndexOf(ListBox1.Items[i]) = -1 then ListBox2.Items.Add(ListBox1.Items[i]);
  • 我制作了一个关于这个问题的简短视频youtu.be/m7uxqFQDSSI,我们在其中创建了一个简单的 Delphi 应用程序来演示问题以及接受的答案是如何工作的。

标签: delphi delphi-5


【解决方案1】:

如果你有一个单选列表框1:

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

我认为后者也适用于单选。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 2022-06-26
相关资源
最近更新 更多