Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Child Forms Acces Violation
|
|||
|---|---|---|---|
|
#18+
Здравсвтуйте! Прошу прощение за то что вопрос может быть избитый, но все же помогите пожалуйста разобраться. Создаю дочернюю форму из формы №1 (к примеру) NewPrihod_NaklForm:=TNewPrihod_NaklForm.Create(Self); Все работает. Создаю дочернюю форму из формы №2 (к примеру) NewPrihod_NaklForm:=TNewPrihod_NaklForm.Create(Self); тоже вроде работает. Так вот стоит мне опять создать дочернюю форму из формы №1 так возникает Access Violation. Глюк наблюдается с родительской формой. Если я вместо Self укзываю название главной формы приложения, то все работает, но это некорректно. Спасибо С Уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 10:10 |
|
||
|
Child Forms Acces Violation
|
|||
|---|---|---|---|
|
#18+
Создаёшь, а потом удаляешь? Каким образом удаляешь? Для создания форм есть специальная процедура - Application.CreateForm(...), почему ей не пользуешься? И вообще, как то не очень понятно написан вопрос (оттого я так туманно и отвечаю), можно поподробней? Могу предположить что, форма 2 уничтожается, унося с собой NewPrihod_NaklForm, а где-то остаются ссылки на эту самую NewPrihod_NaklForm, обращение к которым и вызывает всеми любимый Access Violation ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 10:34 |
|
||
|
Child Forms Acces Violation
|
|||
|---|---|---|---|
|
#18+
Для создания форм есть специальная процедура - Application.CreateForm(...), почему ей не пользуешься? Это чем же таким она специальная? Не надо людей с толку сбивать. Тем более, что этой процедурой можно создать форму с владельцем TApplication - а это не нужно делать во многих случаях. Почти всегда я бы сказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 11:18 |
|
||
|
Child Forms Acces Violation
|
|||
|---|---|---|---|
|
#18+
By default, a form owns all components that are on it. In turn, the form is owned by the application. Thus when the application shuts down and its memory is freed, the memory for all forms (and all their owned components) is also freed. И почему же почти во всех случаях не нужно создавать форму с владельцем Application ? Я бы сказал, что как раз узкоспециальные случаи. В данном случае впрочем, могу предположить, что указание Application не спасет. Возможно, при повторном создании из формы №1, предыдущая форма не была уничтожена; или она уничтожается неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 15:08 |
|
||
|
Child Forms Acces Violation
|
|||
|---|---|---|---|
|
#18+
И почему же почти во всех случаях не нужно создавать форму с владельцем Application? Я бы сказал, что как раз узкоспециальные случаи. И что же в ней такого особенного? Чем она лучше TForm.Create(Owner)? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Прежде чем кидаться словами из пошлой книги, не мешает исходники глянуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 15:15 |
|
||
|
Child Forms Acces Violation
|
|||
|---|---|---|---|
|
#18+
Если у тебя приложение MDI, никогда не закладывайся на переменные, как ты делаешь NewPrihod_NaklForm:=TNewPrihod_NaklForm.Create(Self); Я делаю так Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 15:16 |
|
||
|
Child Forms Acces Violation
|
|||
|---|---|---|---|
|
#18+
И почему же почти во всех случаях не нужно создавать форму с владельцем Application? Я бы сказал, что как раз узкоспециальные случаи. Когда захочется добраться из одной формы до формы, создавшей ее, тогда станет понятно, почему Application не подходит. И чтобы не вспоминать потом, какие как создавал, лучше все создавать явно указывая владельца-форму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 15:27 |
|
||
|
Child Forms Acces Violation
|
|||
|---|---|---|---|
|
#18+
2 eNose: Не знаю, что ты хотел сказать этим пошлым кодом. ... Instance.Create(Self); ... Чем является Self у метода Application.CreateForm, как ты думаешь? Кстати, пошлой книгой является Help. 2 tygra: Ну по мне, добираться из одной формы до формы, создавшей ее, - как раз и есть узкоспециальный случай. Возможно, у тебя без этого не обойтись - с другой стороны, хорошей практикой является работа внутри формы, т.е. локализации области видимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 17:30 |
|
||
|
Child Forms Acces Violation
|
|||
|---|---|---|---|
|
#18+
aag, найди 10 отличий: Form1 := TForm1.Create(Application) и Application.CreateForm(TForm1, Form1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2003, 08:04 |
|
||
|
Child Forms Acces Violation
|
|||
|---|---|---|---|
|
#18+
2 eNose: По существу этих отличий нет, так с этим я и не спорил. Я полемезировал :) с Тигрой по поводу нужности/полезности создания формы с владельцем Application. Мое мнение - за редким исключением - это нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2003, 09:07 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32124727&tid=2118816]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
69ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 404ms |

| 0 / 0 |
