![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема удаления объектов [D7]
AAN © (2007-06-05 19:37:00)Здравствуйте. Подскажите,пожалуйста, как попроще написать в Delphi_7 деструктор, удаляющий при закрытии с формы Shape, Image, Label, Edit.
Заранее благодарю за поддержку и сотрудничество.
Alex.
Плохиш (2007-06-06 01:30:00) [1]
> AAN (05.06.07 19:37)
Если, при создании компонентов передавал в конструктор указатель на текущий экземпляр формы self, то ничего вручную удалять ненадо, они будут удалены в деструкторе формы.
Anatoly Podgoretsky (2007-06-06 00:02:00) [2]> DrPass (05.06.2007 23:48:18) [18]
Поскольку объект не создан
DrPass (2007-06-05 23:48:00) [3]
> Мозги.Free:)
Access violation in module Голова.exe. Read of address 00000000
rumpelshtilchen (2007-06-05 22:21:00) [4]
> А если мне нужно удалить не только Shape? но и др. компоненты?
Если ещё не сделал то надо так:
Shape.Free;
Image.Free;
Label.Free;
Edit.Free;
Мозги.Free:)
AAN (2007-06-05 21:27:00) [5]Спасибо за советы. Попробую. AAN.
Джо (2007-06-05 21:22:00) [6]> [13] AAN (05.06.07 21:18)
> Хорошо понимаю: вам - спецам-профессионалам весело. А вот
> мне не очень. Подскажите с проблемой удаления. Пожалуйста.
С такими знаниями нужно книжки читать. Серьезно.
DrPass (2007-06-05 21:22:00) [7]
> AAN (05.06.07 21:18) [13]
Нет, ты все-таки не понимаешь. Вот это
> Что обозначает Shape.Free
> А если мне нужно удалить не только Shape? но и др. компоненты?
- это настолько детский и смехотворный вопрос, что его просто стыдно задавать. Тебе задали направление поиска. РЕШИ ЭТУ ЗАДАЧУ САМ, она ведь простейшая!
AAN (2007-06-05 21:18:00) [8]Хорошо понимаю: вам - спецам-профессионалам весело. А вот мне не очень. Подскажите с проблемой удаления. Пожалуйста.
DrPass (2007-06-05 21:09:00) [9]
> Джо © (05.06.07 21:02) [9]
Зато так круче выглядит
> AAN (05.06.07 21:04) [11]
> А если мне нужно удалить не только Shape? но и др. компоненты?
А это, уважаемый, тебе будет тест на IQ. Решишь - молодец, ты еще не потерян для общества. Не решишь - всерьез задумайся над возможностью суицида :)
AAN (2007-06-05 21:04:00) [10]А поподробнее...? Что обозначает Shape.Free или даже if Assigned(Shape) then Shape.Free? Пожалуйста, разъясните что к чему? А если мне нужно удалить не только Shape? но и др. компоненты?
Virgo_Style (2007-06-05 21:04:00) [11]DrPass © (05.06.07 20:47) [8]
или даже if Assigned(Shape) then Shape.Free
для верности лучше два раза проверить... :-)
Хотя FreeAndNil надежнее)
Джо (2007-06-05 21:02:00) [12]> [8] DrPass © (05.06.07 20:47)
> или даже if Assigned(Shape) then Shape.Free
Assigned в общем лишнее, в теле Free и так проверяется, что Self<>nil :)
DrPass (2007-06-05 20:47:00) [13]Хм...
Shape.Free
или даже if Assigned(Shape) then Shape.Free
AAN (2007-06-05 20:35:00) [14]Нет. Этот аспект как раз ясен. Вопрос в другом. Каккой код надо ввести?
Джо (2007-06-05 20:31:00) [15]> [5] AAN (05.06.07 20:27)
> Не понял? Каким образом это сделать?
В дизайнере объектов выделить форму, перейте на вкладку Events, щелкнуть на пустом поле напротив названия события (напр., OnCreate). В открывшемся окне кода написать нужный код.
AAN (2007-06-05 20:27:00) [16]Не понял? Каким образом это сделать?
DrPass (2007-06-05 20:13:00) [17]
> Деструктор компонентов:Shape, Image, Label, Edit
Деструктор компонентов уже есть у этих компонентов. Ничего там писать не нужно.
Если ты сам их создал в обработчике какого-то события (например, в OnCreate формы), то сам удали, например, в обработчике в OnDestroy
AAN (2007-06-05 20:09:00) [18]Деструктор компонентов:Shape, Image, Label, Edit.
В начале, с помощью Create, они были помещены на форму.
В конце, с помощью этого деструктора, они должны удаляться с формы.
Джо (2007-06-05 19:39:00) [19]П.С. Если Shape, Image, Label, Edit были помещены на форму в дизайн-тайм, то удалены они будут автоматически при уничтожении экз. формы. Это я на всякий случай, мало ли что :)
Джо (2007-06-05 19:38:00) [20]Деструктор чего?