Это код добавления элементов в массив:
- Код: Выделить всё
var arI, arN : integer;
begin
arN:=Length(ArrayOpenPicture);
if arN=0 then
begin // добавляем 0-й элемент
SetLength(ArrayOpenPicture,1);
ArrayOpenPicture[0]:=TfmPicture.Create(Owner);
ArrayOpenPicture[0].Width:=800;
ArrayOpenPicture[0].Height:=600;
ArrayOpenPicture[0].Left:=fmHMIEditor.Left;
ArrayOpenPicture[0].Top:=fmHMIEditor.top+fmHMIEditor.Height+25;
ArrayOpenPicture[0].Caption:='New Picture 1';
ArrayOpenPicture[0].Show;
end
else
begin
arI:=0;
while (arI<arN) and (ArrayOpenPicture[arI].Handle<>0) do
BEGIN
inc(arI);
end;
if arI=arN then SetLength(ArrayOpenPicture,arN+1);
if (ArrayOpenPicture[arI]=nil) or (ArrayOpenPicture[arI].Handle=0) then
begin
ArrayOpenPicture[arI]:=TfmPicture.Create(Owner);
ArrayOpenPicture[arI].Width:=800;
ArrayOpenPicture[arI].Height:=600;
ArrayOpenPicture[arI].Left:=fmHMIEditor.Left;
ArrayOpenPicture[arI].Top:=fmHMIEditor.top+fmHMIEditor.Height+25;
ArrayOpenPicture[arI].Caption:='New Picture '+inttostr(ArrayOpenPicture[arI].Handle);
ArrayOpenPicture[arI].Show;
end
else
MessageDlg('Не nil',mtError,[mbOk],0);
end;
fmObjInspector.UpdateProjectTree;
Так я просматриваю массив:
- Код: Выделить всё
var arI, arN : integer;
NewNode : TTreeNode;
begin
TreeView1.Items.Clear;
arN:=Length(ArrayOpenPicture);
if arN=0 then exit;
dec(arN);
for arI:=0 to arN do
begin
if (ArrayOpenPicture[arI]<>nil) and (ArrayOpenPicture[arI].Handle<>0) then
NewNode:=TreeView1.Items.AddChild(TreeView1.Selected,ArrayOpenPicture[arI].Caption);
NewNode.ImageIndex:=0;
NewNode.SelectedIndex:=0;
end;
Закрытие формы делаю с самоуничтожением:
- Код: Выделить всё
CloseAction:=caFree;
Если открыть например 4 формы а потом закрыть 2 и 3-ю то при добавлениии новой 2 и 3 элемент ссылаются на одну и ту же форму. Подскажите в чем может быть дело или скажите есть ли альтернативные варианты решения задачи?
Добавлено спустя 3 часа 2 минуты 29 секунд:
Извиняюсь за пустую тему. Проблема решилась заданием уникального номера для каждой формы. От массива форм отказался совсем. Кстати незнаете почему TreeView вылетает с ошибкой если разрешать редактирование значений?