![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
AlexLogos |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 23.4.2009 Репутация: нет Всего: 1 |
Хело, народ! У меня есть прога в которой на форме динамически создается фрейм, который выполняет ряд задач по роботе с БД. Хочу написать процедурку чтоб фрейм загружался из Dll. Написал процедуру в библиотеке
описал ее в программе
вызываю ее нажатием на кнопке и получаю ошибку "Control 'FrUniForm' has no parent window". Как с этим бороться? |
||||
|
|||||
AlexLogos |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 23.4.2009 Репутация: нет Всего: 1 |
Народ, неужели никто не создавал компоненты из Dll, хотя б для пробы?
Профи, когда пишете комерческий продукт, все пакуете а один екзешник? |
|||
|
||||
cemick |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
Попробуйте вот так, возможно поможет:
А именно: В dll:
Вызов метода инициализация надо выполнять до создания формы. Screen в dll тоже свой, и пойдее тоже можно заменить, но должно работать и так. Если нет, не получается, то из dll возвращайте класс фрейма и создавайте в основном приложение, т.е. к выше приведеному коде допишите функцию экспорта класса
а в основном приложение как то так:
Это сообщение отредактировал(а) cemick - 14.6.2011, 21:33 |
||||||
|
|||||||
RomanEEP |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 5 Всего: 8 |
я делал так:
1)функция в DLL GetFrameInterface: IMyFrame;
в методе procedure Show я 2)создаю форму на ParentWnd с Border = bsNone 3)создаю на форме фрейм прослойка в виде формы нужна, чтобы работал метод SetFocus() компонентов, который ищет активную форму |
|||
|
||||
AlexLogos |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 23.4.2009 Репутация: нет Всего: 1 |
попробовал сначала без экспорта класса но получаю сообщение что "Cannot assign a TFont to a TFont"...
пробую сделать експорт класса но на процедуре
получаю ошибку "[DCC Error] ClassDll.dpr(112): E2010 Incompatible types: 'TFrUniForm' and 'Class reference'"... Это сообщение отредактировал(а) AlexLogos - 15.6.2011, 09:28 |
|||
|
||||
cemick |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
Что это у вас такое? Там должена быть ссылка на класс, т.е.
и соответственно:
Это сообщение отредактировал(а) cemick - 15.6.2011, 14:28 |
||||
|
|||||
AlexLogos |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 23.4.2009 Репутация: нет Всего: 1 |
Спасибо, исправил. Пока нужны подсказки, ибо это моя первая проба работы с библиотеками.
В общем я изменил процедуру которую написал cemick, так ка я себе это представляю (в оригинале были ошибки)
в итоге получаю сообщение об ошибке в блоке try. Что изменить? И еще, после закрытия главного окна программы получаю AV. Что это? |
|||
|
||||
cemick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
У меня такой способ прокатывал для создания формы, с фреймам все равно вышло "TForm can not Assignt to Tform", потому выход только использовать Build with runtime package, что бы везде использовались одинаковые типы. А ошибка у вас скорее из за отсутствия в uses'ах ShareMem (Ну или FastMM, смотря что у вас там).
Смотрим пример Это сообщение отредактировал(а) cemick - 15.6.2011, 16:03 Присоединённый файл ( Кол-во скачиваний: 55 ) ![]() |
|||
|
||||
AlexLogos |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 23.4.2009 Репутация: нет Всего: 1 |
что это за ссылка, перехожу по ней - закачивается какой-то html.
|
|||
|
||||
cemick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
||||
|
||||
AlexLogos |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 23.4.2009 Репутация: нет Всего: 1 |
Народ, при закрытии окна программы постоянно получаю ошибку AV, несмотря на то что и в dll и в проге прописан первым в uses ShareMem. Что за беда?
|
|||
|
||||
cemick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
В какой программе? В том примере что я выложил? Или получаешь в своей? Если в своей, то то это старая проблема гадания на кофейной гуще, выкладывай свой пример где получаешь. Это сообщение отредактировал(а) cemick - 16.6.2011, 11:17 |
|||
|
||||
AlexLogos |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 23.4.2009 Репутация: нет Всего: 1 |
Не в том месте указал ShareMem. Теперь все нормально - не выскакивает AV при закрытии приложения.
Это сообщение отредактировал(а) AlexLogos - 20.6.2011, 12:11 |
|||
|
||||
AlexLogos |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 23.4.2009 Репутация: нет Всего: 1 |
Что ж, продолжение следует
![]() Я взял присланный cemick'ом архив и использовал его при тестировании его способа формирования фрейма Вот собственно коды проекта и библиотеки
Библиотека
в итоге я получаю сообщение "Cannot assign TFont to a TFont". Что опять не то? |
||||
|
|||||
cemick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
А что с галочкой Build with runtime package ?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |