Главная страница
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.053 c
1-1120470968
mmms
2005-07-04 13:56
2005.07.25
Вызов ф-и из DLL


3-1118592202
slavaak
2005-06-12 20:03
2005.07.25
Сохранение данных произвольной структуры в ClientDataSet


14-1120461030
Vlad Oshin
2005-07-04 11:10
2005.07.25
Смотрели Познера вчера про Российский автопром?


1-1120805538
Demidoff
2005-07-08 10:52
2005.07.25
Как заглушить ошибку?


3-1118394819
Andy Nortsov
2005-06-10 13:13
2005.07.25
Как правильно работать с ADO+ODBC+FireBird+Delphi?