Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MDI-формы в DLL 
:(
    Опции темы
Guest_Михаил
Дата 26.5.2003, 17:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я пытаюсь на Delphi переделать в DLL текстовый редактор (работающее MDI-приложение!). Выполняю явную загрузку и запускаю. Форма появляется, но при попытке создать форму MDIChild происходит ошибка "Cannot create form. No MDI forms are currently active." и приложение виснет.
Можно ли в DLL помещять MDI формы и как это сделать. С благодарностью, Михаил.
  Вверх
Medved
Дата 27.5.2003, 03:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Хотелось бы на код посмотреть...


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Dapo
Дата 27.5.2003, 04:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



MDI помещкать в длл можно, а в некоторых случаях нужно. Судя по ошибке, у тебя длл просто не знает про твою MDI-форму или про то, что она MDI. Код, конечно, хорошо бы привести.
PM MAIL   Вверх
Mikel
Дата 27.5.2003, 06:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: 1
Всего: 2



Посмотри в любом dpr'е как формы добавляются в application.


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Vyacheslav
Дата 27.5.2003, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 59



Я сам по Builder. Но проблема известная и заключается в том, что основное приложение и dll получают каждая свои собственные экземпляры Application. Естественно в Application от dll никаких активных MDI forms не существует, о чем тебе и сообщают.
Самый простой способ решить ее - это линковать основное приложение и dll-ки с включенной обцией Build with runtime package. В этом случае и основное приложение и dll имеют один экземпляр TApplication на двоих.
Второй способ более трудоемкий и не очень надежный заключается в подмене Application у dll. После загрузки dll вызови некую свою функцию инициализации (назовем ее условно Init), которой передай ссылку на Application. Эта функция должна запомнить свой собственный экземпляр TApplication и присвоить переменной Application значение, переданной через параметр. Далее можно вызывать остальные функции из dll. Перед выгрузкой dll нужно вызвать еще одну функцию, которая вернет все обратно. Иначе приложение грохнется. Код функции Init привожу на С++, так Object Pascal знаю не достаточно хорошо.

extern "C" void __declspec(dllexport) Init(TApplication* );
TApplication* DllApp = NULL;

void Init( TApplication* MainApp)
{
if (!DllApp)
{
DllApp = Application;
Application = MainApp;
}
}

Я лично всегда пользовался первым способом


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.