Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.30;
Скачать: CL | DM;

Вниз

Отличие self и application   Найти похожие ветки 

 
RomanH ©   (2007-09-03 10:53) [0]

Отличие
procedure TGrantForm.BitBtn3Click(Sender: TObject);
var TESF:TEditStatusForm;
begin
    TESF:=TEditStatusForm.Create(self);
    TESF.ShowModal;
    TESF.Free;
end;

от
procedure TGrantForm.BitBtn3Click(Sender: TObject);
var TESF:TEditStatusForm;
begin
    TESF:=TEditStatusForm.Create(Application);
    TESF.ShowModal;
    TESF.Free;
end;

Помогите понять в чем отличие.


 
Reindeer Moss Eater ©   (2007-09-03 10:55) [1]

В типе отличие. Там TGrantForm, а там TApplication


 
Сергей М. ©   (2007-09-03 10:56) [2]

В данном случае никакого отличия нет.

Отличия будут заметны только при отсутствии строки TESF.Free


 
evvcom ©   (2007-09-03 10:58) [3]

в 1 случае за уничтожение объекта TEditStatusForm ответственна TGrantForm, а во втором Application. Но в коде ты сам убиваешь эту TEditStatusForm, поэтому, если в методах ShowModal и Free, не возникнет исключительной ситуации, то оба варианта идентичны, точно также, если туда передать вообще nil. А разными последствия будут только в случае возникновения исключения.


 
RomanH ©   (2007-09-03 11:13) [4]

Мастера, спасибо. Но правильно ли я Вас понял?
Подведу итоги, т.е. если я использую 1 случай, то для того чтобы освободить память мне обязательно надо использовать деструктор Free, а во втором случае не надо так что ли, объект TEditStatusForm сам освободиться из памяти.


 
Сергей М. ©   (2007-09-03 11:16) [5]


> объект TEditStatusForm сам освободиться из памяти


Правильное решение напрямую зависит от того, в какой момент времени и при каких обстоятельствах ты желаешь уничтожения созданного тобой объекта класса TEditStatusForm..


 
Leonid Troyanovsky ©   (2007-09-03 11:18) [6]


> RomanH ©   (03.09.07 11:13) [4]

> Подведу итоги, т.е. если я использую 1 случай,

Высеки у себя на стене правильный способ:

with TEditStatusForm.Create(nil) do
  try
    ..
    .. := ShowModal;
    ..
 finally
   Free;
 end;

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2007-09-03 12:09) [7]

Насчет Create(nil) - не всегда это правильно, в последнее время почти всегда неправильно.
Тоже будет касаться TApplication.
А вот Self наиболее подходяще, поскольку свойство Owner давно отвечает и за другие вещи, а не зная что внутри формы и как устроена там обработка вообще сложно говорить о чем либо. Может у него там Owner.Button1


 
evvcom ©   (2007-09-03 12:34) [8]


> поскольку свойство Owner давно отвечает и за другие вещи

Все правильно, только автору, имхо, этим пока не стоит голову забивать. Пусть поймет для начала тот смысл этого Owner, который закладывался изначально и который задокументирован в официальной справке от Borland


 
Anatoly Podgoretsky ©   (2007-09-03 12:58) [9]

А потом будет вопрос, почему форма ведет иначе, чем у меня указано в свойствах.



Страницы: 1 вся ветка

Текущий архив: 2007.09.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
15-1186565545
EvChul
2007-08-08 13:32
2007.09.30
Посоветуйте компоненты для ГИС


2-1188802512
Dmitriy_
2007-09-03 10:55
2007.09.30
Как нажать на кнопку в окне браузера


15-1188080478
Альберт_
2007-08-26 02:21
2007.09.30
кто-нибудь продавал плоды своего Творчества?


3-1179483915
Parenek
2007-05-18 14:25
2007.09.30
как узнать, добавлена ли запись ?


2-1188813839
Lyberzon
2007-09-03 14:03
2007.09.30
Как загрузить из INI список секций в ComboBox?