Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];

Вниз

Отличие 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.049 c
3-1180429384
deras
2007-05-29 13:03
2007.09.30
Left join в Local SQL


2-1188818457
Помогите!
2007-09-03 15:20
2007.09.30
Работа с битами.


15-1188546061
Ega23
2007-08-31 11:41
2007.09.30
Неклиентская область окна


2-1188904217
Service
2007-09-04 15:10
2007.09.30
TServerSocket & TClientSocket


1-1184932927
Ice-T
2007-07-20 16:02
2007.09.30
Приложение и его главное окно - странный эффект





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский