Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление обьектов


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]

Именно так. Скорее всего ссылка теряется.


Наверх

Титульная страница Поиск, карта сайта Написать письмо