![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление обьектов
sddqw © (2003-01-23 14:03:00)Есть массив обьектов,созданных во время выполнения программы:
Block[i,j] := TStaticText.Create(frmNewProject);
Block[i,j].Parent := frmNewProject.scrbox;
Где ScrBox это ScroolBox,а Block[i,j] Обьявленно следующим образом:
Var
Block :array[1..60,1..60] of TStaticText;-доступный для всего приложения.
Я хочу удалить,допустим блок Block[2,4] и пишу:
Block[2,4].destroy; или Block[2,4].free; но он всеп равно остается на экране.Как удалить его глобально т.е. так как будто он никогда не существовал в программе?
sddqw (2003-01-23 14:59:00) [1]РАБОТАЕТ! Огромное всем СПАСИБО!
gsu (2003-01-23 14:54:00) [2]FreeAndNil(Block[2,4])
тоже, что
Block[2,4].free
Block[2,4]:=nil
Skier (2003-01-23 14:53:00) [3]If Block[i,j]<>nil then
Begin
block[i,j].free;
block[i,j] := nil;(?)
End;
End;
gsu (2003-01-23 14:52:00) [4]Block[2,4].free
Block[2,4]:=nil
и перерисовываешь все заново
sddqw (2003-01-23 14:52:00) [5]Нет Grid Не как,там блок схема рисуется.А чему присваивать FreeAndNil?
REA (2003-01-23 14:51:00) [6]Во-первых FreeAndNil - объект уничтожается, но не ссылки на него.
А не лучше ли Grid использовать?
sddqw (2003-01-23 14:50:00) [7]Да там все правильно просто наприсанно For j:=1 to 60
Skier (2003-01-23 14:49:00) [8]For i:=1 60 do For 60 do???!!!
sddqw (2003-01-23 14:45:00) [9]ДА...помоги!
gsu (2003-01-23 14:44:00) [10]опять ты (-:|~
sddqw (2003-01-23 14:42:00) [11]Procedure SetBlock;
Var
i,j:Byte;
Begin
{Удаляем все уже созданные:}
For i:=1 to 60 do
For j:=1 to 60 do
Begin
If Block[i,j]<>nil then
Begin
block[i,j].free;
If block[i,j]=nil then ShowMessage(Inttostr(i)+"-"+Inttostr(j));
End;
End;
{Код}
......
{Создаем по новой}
For i:=1 60 do
For 60 do
Begin
Block[i,j] := TStaticText.Create(frmNewProject);
Block[i,j].Parent := frmNewProject.scrbox;
End;
Skier (2003-01-23 14:36:00) [12]>sddqw
> Что делать?
Код показать.
sddqw (2003-01-23 14:35:00) [13]Не понятно если после строки Block[2,4].free Я пишу что If block[2,4]=nil then ShowMessage("a");То он не вывдоит никакого сообщения...т.е. блок не уничтожается.Что делать?
han_malign (2003-01-23 14:15:00) [14]frmNewProject.scrbox.Invalidate; ???
REA (2003-01-23 14:06:00) [15]Именно так. Скорее всего ссылка теряется.