我将项目添加到列表框:

for i:=0 to HomeWorkers.Count-1 do
begin
s := '['+HomeWorker[i].Id+']  ' + HomeWorker[i].Name;
Listbox1.Items.Add(s);
end;


现在我要获取所选项目的数量。
我可以得到它的标题:

ShowMessage(ListBox1.Items.Strings[Listbox1.ItemIndex]);


示例ID:12880345、1274136。
我可以添加项目

'['+HomeWorker[i].Id+']  ' + HomeWorker[i].Name;


,但在ShowMessage中仅显示HomeWorker [i] .Id,而没有字符串标题解析?提前致谢。
P.S我来自俄罗斯,对不起,英语不好

最佳答案

您可以将ID存储在Objects属性中,只需将类型从Integer转换为TObject

ListBox1.Items.AddObject(Format('[%d] %s', [Homeworker.ID, Homeworker.Name]),
  TObject(Homeworker.ID));


然后您可以检索它,进行类型转换:

ShowMessage(IntToStr(Integer(ListBox1.Items.Objects[ListBox1.ItemIndex])));

10-04 18:40