![]() |
|
Модераторы: 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 - женщины они все такие, когда тебе надо что то от нее она задом поварачиваеться.. |
|||
|
||||
| z-END |
|
||||||||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Ну я даже незнаю
1. в Unit'e - dll:
в library-dll:
2. в основном приложении:
и все работает тока перед закрытием основного приложения ОБЯЗАТЕЛЬНО такой код:
-------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
||||||||
|
|||||||||
| Killer |
|
|||
|
Unregistered |
СПАСИБО ОГРОМНОЕ, вроде тоже так же делал а че та не работало
|
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: 1 Всего: 5 |
А еще есть альтернативный вариант - использовать JEDI VCL. Помимо множества разных прибамбаслв там имеется компонент для построения и использования плагинов. Есть готовые демки для SDI, MDI и прочая....
-------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: нет Всего: 16 |
Люди, а вы можете объяснить такую фразу (message 2, page 1)
И еще такой вопрос: получается при загрузке dll появляются еще один Application, и еще один Screen (и может еще что-нибудь)? Тогда если воспользоваться вариантом nJIaKca.spb, то они (dll'овские) останутся в памяти, пока программа не завершится? |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
почему сразу появляется?
они там и так есть -- одна библиотек может использоваться >1 приложением -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
![]()
|
| Правила форума "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. |