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

Вниз

sMDIForm и sMDIChild   Найти похожие ветки 

 
Apachi   (2005-07-07 17:51) [0]

Народ что я делаю не так?

Если я грубо повел себя где то не так сильно не судите...

На sMDIForm обявляем переменную

   child_form: TChildForm;

На пункт меню на главной форме вешаем процедурку стаким содержанием

 if not Assigned(child_form)then begin
   child_form := TChildForm.Create(self);
   child_form.Show;
 end else
   begin
    child_form.SetFocus;
    child_form.Show;
   end;

Теперь что касается самого sMDIChild окна

на закрытие вешаем

 MainForm.child_form:=nil;
 self.free

Что то я ведь сделал не так! потомучто немного пооткрываешь закрываешь эти чилд окна и выскакивают ошибки работы с памятью, подскажите где почитать как их грамотно создавать и удалять, плиз


 
Игорь Шевченко ©   (2005-07-07 17:52) [1]


>  self.free


Заменить на Action := caFree


 
Apachi   (2005-07-07 17:58) [2]

Игорь Шевченко ©  Работает!!!

И в чем разница????

Спасибо!


 
Игорь Шевченко ©   (2005-07-07 18:15) [3]


> И в чем разница????


В том, что нельзя уничтожать объект внутри его же метода.


 
begin...end ©   (2005-07-07 18:21) [4]

> Игорь Шевченко ©   (07.07.05 18:15) [3]

Точнее, внутри обработчика события нельзя. В обычных методах -- зачастую можно.


 
Игорь Шевченко ©   (2005-07-07 18:22) [5]

begin...end ©   (07.07.05 18:21) [4]

Безусловно.


 
Юрий Зотов ©   (2005-07-07 18:36) [6]

> Apachi   (07.07.05 17:51)  

Action := caFree - это Вам правильно подсказали. Но одного этого мало, ошибка останется. Потому что при уничтожении объекта ссылки на него не обнуляются, переменная child_form не изменится,  Assigned даст True и сработает child_form.SetFocus. А переменная child_form указывает на уже несуществующий объект - и получим Access Violation.

Вывод - при уничтожении дочерней формы надо присваивать nil переменной child_form.


 
Игорь Шевченко ©   (2005-07-07 18:38) [7]


> Вывод - при уничтожении дочерней формы надо присваивать
> nil переменной child_form


Собстна, в нулевом посте это и написано.


 
Юрий Зотов ©   (2005-07-07 19:01) [8]

Гм... и правда... проглядел.
:о)



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

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

Наверх




Память: 0.48 MB
Время: 0.037 c
3-1117703908
KirillR
2005-06-02 13:18
2005.07.25
DOA при подсчете кол-ва записей в TOracleDataSet происходит запро


14-1120417718
Ломброзо
2005-07-03 23:08
2005.07.25
"Подключение к удалённому рабочему столу"


14-1120200539
Priest
2005-07-01 10:48
2005.07.25
Запись последовательности действий на avi


1-1120651308
chili
2005-07-06 16:01
2005.07.25
Помоги разобраться как Outlook Express создает POP3 Password2


1-1120470968
mmms
2005-07-04 13:56
2005.07.25
Вызов ф-и из DLL