Pan-SQL |
Отправлено: 15.09.2005, 23:11 |
|
Не зарегистрирован
|
Здравствуйте коллеги! Очень необходима ваша помощь в решении следующей задачи? MDI приложение имеет 2 формы (Form1, Form2). Форма Form2 является дочерним окном, а форма Form1 соответственно главным. Главная форма содержит 2 кнопки (Button1 и Button2). Дочерняя форма содержит одну кнопку (Button1). Кнопка Button1 служит для открытия дочерней формы. Вот ее код:
TForm2 *f=new TForm2(Application);
if (!f) return;
f->Show();
Кнопка Button2 служит для активизации уже открытой дочерней формы. Вот ее код:
Form2->Visible=true;
Form2->Show();
Кнопка Button1 дочерней формы служит для активизации главной формы. Вот ее код:
Form1->SetFocus();
Form2 открывается с использованием функции CreateParams() и стилем окна WS_EX_APPWINDOW.
Проблема следующая: когда я пытаюсь активизировать уже открытую дочернюю форму путем нажатия на Button2 на главной форме, получаю исключение:
Access violation at address 00402CD6 in module. Read of address 00000000. Кто знает, подскажите. Заранее благодарен
|
|
olegenty |
Отправлено: 16.09.2005, 06:39 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
поотлаживай.
|
|
radiofun |
Отправлено: 16.09.2005, 11:21 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 20
|
Если я правильно понял то единствееный указатель на экземпляр класса
TForm2 ето f ,следовательно
ты не можешь обратится к дочерней форме как Form2 ,Надо так
Form1->MDIChildren[0]->Show(); |
|
Pan-SQL |
Отправлено: 16.09.2005, 11:48 |
|
Не зарегистрирован
|
QUOTE (olegenty @ 16/09/2005, 06:39) | поотлаживай. |
отлаживал. Ничего не получается. |
|
Pan-SQL |
Отправлено: 16.09.2005, 11:52 |
|
Не зарегистрирован
|
Если перименную TForm2 *f=new TForm2(Application); объявить как глобальную |
|
radiofun |
Отправлено: 16.09.2005, 12:38 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 20
|
Если у тебя ТОЛЬКО одна дочерняя форма то можно обьявить указатель на неё в классе TForm1, иначе только через MDIChildren |
|