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

Вниз

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

Наверх




Память: 0.46 MB
Время: 0.011 c
1-1120210030
ch_victor
2005-07-01 13:27
2005.07.25
проблема с компонентом cxGridPopupMenu


8-1111614162
Lex123
2005-03-24 00:42
2005.07.25
winamp


1-1120729687
Magedon
2005-07-07 13:48
2005.07.25
Service pack


1-1120587319
АлексейС
2005-07-05 22:15
2005.07.25
Как оперировать данными интернет сайта ?


3-1118390002
Руслан
2005-06-10 11:53
2005.07.25
Вычисляемые поля.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский