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

Вниз

Ограничение на количество компонентов дочерней формы?   Найти похожие ветки 

 
alex-ran   (2003-09-24 11:12) [0]

Ув. мастера, возникла следующая проблема: при попытке закрыть окно главной формы вылетает сообщение об ошибке:
Exception EAccessViolation in module XXX.exe at 0003BAAA...
Сообщение об ошибке возникает только когда добавляю на дочернюю форму больше 12 DBEdit-ов. Если я в OnClose главной формы закрываю все дочерние то все ОК.
Не подскажите в чем тут дело?


 
Skier   (2003-09-24 11:15) [1]


> Не подскажите в чем тут дело?

Ошибка в программе.


 
alex-ran   (2003-09-24 11:39) [2]

Которой пока нет?
Просто на форму накидал DBEdit-ов и компоненты для связи с БД.
Из программы :)в дочерней формы присутствует только:

procedure TfmFinCred.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;

Да, еще стращный кусок кода в главной форме:
procedure TfmMain.smnFinCredClick(Sender: TObject);
begin
with TfmFinCred.Create (Self) do
begin
Left:=0;
Top:=0;
Height:=500;
Width:=680;
end;
end;
И где тут ошибка?


 
Е-Моё имя   (2003-09-24 11:44) [3]


> module XXX.exe

ишь!


 
Юрий Зотов   (2003-09-24 13:25) [4]

> alex-ran (24.09.03 11:39) [2]

Можно предположить, что дело в том, что делается от в чем.

1. Action:=caFree;
То есть, дочерняя форма при своем закрытии будет уничтожаться.

2. with TfmFinCred.Create (Self) do ...
То есть, главная форма становится владельцем дочерней и поэтому при закрытии главной формы будет сделана попытка уничтожения дочерней формы.

Получается уничтожение уже уничтоженной дочерней формы. Попробуйте заменить ее владельца на Application:
with TfmFinCred.Create(Application) do ...


 
Владислав   (2003-09-24 13:34) [5]

> Юрий Зотов © (24.09.03 13:25) [4]

"Получается уничтожение уже уничтоженной дочерней формы"

А какже TComponent.Notificaton?


 
Юрий Зотов   (2003-09-24 14:07) [6]

> Владислав © (24.09.03 13:34) [5]

А разве в коде TCustomForm.Notification есть очистка каких-либо ссылок на дочерние формы?

Ее там нет. Значит, главная форма вместе с собой просто уничтожит все свои дочерние формы, ничего не обнуляя. А затем (ведь стоит Action = caFree) будут вызваны Release, CMRelease и Free для дочерней формы.

Впрочем, для полной ясности это надо просто пройти дебаггером.


 
alex-ran   (2003-09-24 15:10) [7]

Ув. мастера. После экспериментов обнаружилось следующее:
1. При уничтожении на дочерней форме MainMenu проблема исчезла.
2. При последующем создании Меню вновь возникла.
3. При перемещении описания Меню в dfm-файле вперед, сразу после описания свойств формы, проблема вновь исчезла.
4. При добавлении любого пункта в Меню проблема появляется из-за того что описание Меню в dfm-файле прыгает к середине файла, при возврате вперед снова все ОК.
Получается что все дело в порядке следования объектов в дочернем окне?!
Повторяю, на дочернюю форму просто накидана куча компонентов с которыми вообще не связано ни куска кода.

> Юрий Зотов ©


 
alex-ran   (2003-09-24 15:17) [8]


> > Юрий Зотов ©

Мне кажется что если бы дело было в том что Вы предполагаете, то ошибка возникала бы даже при уничтожении пустой дочерней формы и проявлялась бы всегда независимо от количества компонентов и их порядка следования.
Может я и ошибаюсь. Не знаю


 
Переяслов Григорий   (2003-09-24 18:26) [9]

IMHO, где-то портишь память. Ты или используемые тобой компоненты. У меня был случай, когда удаляешь пункт меню - работает, добавляешь - не работает. Выяснилось, что при инициализации стороннего компонента не инициализировалась одна ооочень большая запись и ссылки в ней шли на тот свет. Поэтому и не работало ;-).



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

Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
1-18461
AAZ69
2003-09-24 14:22
2003.10.06
Динамическое обращение к компонентам


14-18557
___Nikolay
2003-09-19 05:59
2003.10.06
* Задача 5 *


1-18390
eLig
2003-09-22 17:02
2003.10.06
Хелп Ми!!!!


1-18287
evgeniy33
2003-09-26 09:24
2003.10.06
как отключить в программе нажатие Alt+F4


14-18624
sancho
2003-09-17 15:30
2003.10.06
Вопрос к математикам





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