У меня есть класс типа TObject с именем CModelItem
Я хочу иметь список этих объектов и иметь возможность изменять значения каждого из них
Итак, я создал класс
CQueueList = class(TList)
private
public
end;
и я делаю
QueueList : CQueueList;
в var
Теперь я могу добавить CModelItem в этот список, например, так:
QueueList := CQueueList.Create;
for idx := 0 to ndx - 1 do
begin
MyItem := CModelItem.Create;
MyItem.CopyHead(CModelItem(RunList.Objects[idx]));
MyItem.ReadData;
MyItem.NumOfIterations := NumRepEdit.Value;
MyItem.IsInQueue := True;
MyItem.LogEvents := EventsCheckBox.Checked;
MyItem.LogMatch := MatchCheckBox.Checked;
MyItem.LogUpdates := UpdatesCheckBox.Checked;
QueueList.Add(MyItem);
end;
Я также могу использовать это, поэтому я могу сделать:
DefForm := TRunDefForm.Create(Self, QueueList.Items[idx]);
с DefForm, принимающим компонент, и CModelItem
Но я сталкиваюсь с проблемами, пытаясь изменить значения объекта в QueueL
Во-первых, я не могу получить доступ к чему-то вроде MyItem.IsInQueue, выполнив
QueueList.Items[idx].IsInQueue := blah;
потому что он говорит мне, что IsInQueue является «необъявленным идентификатором»
Я также попытался создать новый CModelItem и скопировать информацию, например:
idx := QueueListBox.ItemIndex;
MyItem := QueueList.Items[idx];
и это прекрасно компилируется, но выдает «ошибку нарушения доступа» при входе в эту функцию
Я заметил, что QueueList.Items [idx] является указателем, но я действительно не уверен, как мне получить к нему доступ