Главная страница
    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.012 c
1-1120582450
Vovkin 3
2005-07-05 20:54
2005.07.25
Как одиночные Enter удалить, а в двойных оставить только один?


1-1120751838
VasRog
2005-07-07 19:57
2005.07.25
Указатель на динамический массив


14-1120483185
ПЛОВ
2005-07-04 17:19
2005.07.25
Что делать ума не приложу!


6-1113399588
MegaVolt
2005-04-13 17:39
2005.07.25
Ping при количестве потоков >6 работает некорректно


1-1120559338
Juice
2005-07-05 14:28
2005.07.25
Шаблоны в Delphi ?





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