![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Serggggg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.12.2003 Где: Донецк, Украина Репутация: нет Всего: нет |
В очередной раз прошу совета.
Проблема такова - Главная рабочая форма проги - MDIForm, а в подключаемой библиотеке (dll) должна находиться форма MDIChild. Библиотека должна подключаться ДИНАМИЧЕСКИ (через THandle, LoadLibrary и т.д.). В dll есть соответствующая процедура, создающая эту форму (по крайней мере, она пытается это сделать). Возможно ли такое? И если возможно, то как это реализовать? Ибо Delphi жутко ругается при попытке показать дочернее окно посредством ShowModal. Спасибо за внимание. --------------------
C уважением, Serggggg. |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
Не понятно, причем ShowModal и дочернее окно. А для того чтобы создать дочернее окно из dll, нужно передать в библиотеку указатель на TApplication твоего MDI-приложения. И создавать примерно так:
function CreateMDIForm: integer; stdcall; begin Result := integer(TfrmChild.Create(Application));//Application ТВОЕГО приложения end; и еще. перед выгрузкой библиотеки, ей нужно вернуть старое значение Application. |
|||
|
||||
| Killer |
|
|||
|
Unregistered |
Хочу поправить что данная прооцедура не срабатывает при создании MDIChild формы,вызываемой из dll. Как тока не пыталься все равно не получаеться создать.
Если кто то делал не могли бы вы поподробнее рассказть что нужно MDIChild форме что бы она намана встала в основное приложение, а вчастносте в форму типа MDIForm. Заранее спасибо |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Да, кстати, весьма интересная проблема. В свое время я тоже провел некоторое время пытаясь её решить, но так и не решил. Если кто знает, НЕ МОЛЧИТЕ, plz.
|
|||
|
||||
| Killer |
|
|||
|
Unregistered |
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Да конечно можно! Но как? Может стоит обратиться к API функциям? Ведь есть же подобные программы. Наверное буржуи из Borland зажали это возможность в Delphi. Или может я зря их ругаю?
|
|||
|
||||
| Killer |
|
|||
|
Unregistered |
Я вот чета не понял у сержа получилось или не получилось создать, правда это давно было может его уже и нет (шутка), но все же ??? что есть большая разница между динамическим и статическим вызовом библиотеки и последующим вызовом процедуры по динамическому созданию формы ???, можь я дурак и мне тока на VB писать остаеться
|
|||
|
||||
| HiTek |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 21.4.2004 Репутация: нет Всего: нет |
Между динамическим и статическим вызовом библиотек разницы почти нету, кроме эстетической ))
При статической компоновке библиотека всегда должна поставляться вместе с программой. При это создается специальный код пролога/эпилога в программе для облегчения доступа к функциям библиотеки. При динамической компоновке ты сам грузишьбиблиотеку в памятьЮ сам её освобождаешь, сам добываешь точки входа в процедуры, сам следишь за соответствием типов параметров. Это сообщение отредактировал(а) HiTek - 21.4.2004, 14:04 |
|||
|
||||
| Killer |
|
|||
|
Unregistered |
Понятно, Спасибо конечно но такую лекцию читать смылса не было я и так это знаю, я просто спросил от метода вызова это может зависить??, канечно понимаю что это глупый вопрос, но кто его знает???
|
|||
|
||||
| HiTek |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 21.4.2004 Репутация: нет Всего: нет |
Не думаю, что это может повлиять на решение сей проблемы. Т.к. в итоге все грузится оинаково. Просто при динамической компоновке компилер облегчает жизнь программеру немного.
ИМХО Исток проблемы надо искать в самом Delphi, либо в кривых руках. |
|||
|
||||
| Гость_Silence |
|
|||
|
Unregistered |
Тута глядя на вас я решил создать подобную ситуацию. Создал приложение с главной формой типа MDIForm и создал dll туда добавил форму типа MDIChild, потом попытался из приложения вызвать функцию каторая создает форму MDIChild и...................................................................................... в натуре не работает!!!!, причем ошибка скорее всего исходит от того что MDIChild форма не может найти в классе Screen окно типа MDIForm. вота может в этом загвоздка, (так сказать собака зарыта)???????????
|
|||
|
||||
| HiTek |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 21.4.2004 Репутация: нет Всего: нет |
Уважаемый, Гость_Silence, не могли бы вы поподробнее рассказать о своем тесте (код, частями, показать).
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Это основное приложение
это dll |
|||
|
||||
| Гость_Silence |
|
|||
|
Unregistered |
это dll
|
|||
|
||||
| Гость_Silence |
|
|||
|
Unregistered |
зачем частями вот лови почти весь код тока она все равно не фурыкает.
Dll - женщины они все такие, когда тебе надо что то от нее она задом поварачиваеться.. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |