Delphi Listbox Имя элемента, без заголовка - PullRequest
2 голосов
/ 28 июля 2011

Я добавляю элементы в список:

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

Пример идентификатора: 12880345, 1274136. Могу ли я добавить элемент с

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

, но в ShowMessage отображается только HomeWorker [i] .Idбез разбора заголовка строки?Заранее спасибо.PS Я из России, извините за плохой английский

Ответы [ 3 ]

5 голосов
/ 28 июля 2011

Вы можете сохранить идентификаторы в свойстве Objects, просто введите их от Integer до TObject:

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

и позже вы сможете получить их, вернув обратно:

ShowMessage(IntToStr(Integer(ListBox1.Items.Objects[ListBox1.ItemIndex])));
1 голос
/ 28 июля 2011

Насколько я понимаю ваш вопрос, вы хотите извлечь Id из форматированного текста, который вы поместили в список. Если я прав, вы можете сделать это так:

function GetIdFromListBoxText(const Text: string): string;
var
  P1, P2: Integer;
begin
  P1 := Pos('[', Text);
  P2 := Pos(']', Text);
  if (P1<>0) and (P2<>0) then
    Result := Copy(Text, P1+1, P2-P1-1)
  else
    Result := '';
end;

Этот код основан на предположении, что ваши строки Id не содержат [ или ].

Вы можете использовать его в своем коде так:

ShowMessage(GetIdFromListBoxText(ListBox1.Items[Listbox1.ItemIndex]));
0 голосов
/ 23 августа 2014

Может быть, это может ответить на его вопрос, если я правильно понял?Он тянет предмет в своем примере, когда вместо этого должен показывать свой объект.

Попробуйте:

showmessage(string(listbox1.items.object[listbox1.itemindex]));

вместо:

ShowMessage(ListBox1.Items.Strings[Listbox1.ItemIndex]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...