Главная страница
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.061 c
1-1120332898
Logan
2005-07-02 23:34
2005.07.25
Как записать положения CheckBoxа в inifile.


9-1111844692
wiz
2005-03-26 16:44
2005.07.25
Rust (Public Demo)


9-1113162130
Ibrox
2005-04-10 23:42
2005.07.25
Текстуры в OpenGL


4-1117339254
dEd
2005-05-29 08:00
2005.07.25
Как очистить очередь сообщений приложения?


14-1120122816
Андрей Жук
2005-06-30 13:13
2005.07.25
Сколько участников интернет-форума нужно для замены лампочки?