Zakhar |
Отправлено: 18.11.2003, 07:28 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 10
|
Народ может кто поможет разобратся в чем проблема.
Есть MDI форма Form1 и MDIChild Форма2.
Все формы находятся в dll. На форме1 располагается Button1 с
помощью которого вызываеться форма2
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TForm2 *Child = new TForm2(0);
}
в dll записана функция вызова формы1
extern "C" void __export ShowMDI()
{
TForm1* Form1;
Form1 = new TForm1(Application);
Form1->Show()
}
В програме дллку вызываю функцией
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
void (__stdcall *ShowMDI)();
HINSTANCE dllp = LoadLibrary("MDIForm.dll");
ShowMDI= (void(__stdcall *) ())
GetProcAddress(dllp, "_ShowMDI");
ShowMDI();
}
После вызова функции загружается форма1 но после нажатия на Button1
для отображения формы2 возникает ошибка No MDI forms are currently active.
Может кто знает где что нужно прописать чтобы Форма2 отображалась в Форме1.
Заранее спасибо.
Отредактировано Zakhar — 18/11/2003, 08:34 |
|
Anry |
Отправлено: 18.11.2003, 08:57 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 56
|
А зачем так сложно — помещать MDI-форму в dll. Для работы с MDI-формами из dll нужны более хитрые методы работы. Как раз такая проблема у тебя и возникла — дочерняя форма не может найти главную. Могу посоветовать использовать bpl. Своего рода тоже dll только более родная для Builder'а. Гибкости конечно меньше, зато проблем будет меньше. В обработчике события OnClose формы не забывай ее удалять из памяти (а то будет материться типа Access violation).
|
|