Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хочу создать формочку из bpl [D7, WinXP]


Oleon ©   (2004-11-17 17:39:00) 

создал bpl

в ней одна формочка...
в ней в секции initialization пишу
     RegisterClass( TForm1 );
     ShowMessage('FFFF');

Потом когда в приложении делаю
 LoadPackage('Package1.bpl');
 FindClass('TForm1');

он мне показывает FFFFF
а потом пишет, что класс TForm1 не найден...
почему такое может быть?

ведь если показывает FFFF то по идее дожна была и класс зарегистрировать?

Спасибо.


Виктор   (2004-11-21 14:27:00) [1]

Вот ссылки по которым я начинал разработку:
http://delphi.olympus.ru/dk/mastering/m001.htm
http://www.delphikingdom.com/asp/viewitem.asp?UrlItem=/mastering/plugins01.htm
А по конретной строчке в твоей программе я бы посоветовал бы сделать как это работает у меня:
TChildFormClass = class of TChildForm;
private
FChildForm: TChildForm;
begin
TransModuleHandle := LoadPackage(FileLibName);
ChildFormClass := TChildFormClass(FindClass(ChildFormClassName));
FChildForm:=ChildFormClass.Create(self);
,где
ChildFormClass- класс форм которых я вызываю -TChildFormClass.
ChildFormClassName - имя формы которую вызываю, например:
"TfmTools".
FChildForm- экземпляр формы которой создаю.
Для твоего случая переписать все на TForm не представляет сложности. Успехов.


Oleon   (2004-11-19 17:23:00) [2]

Виктор, я же показал вроде в первом посте.
Самое простое пишу в проекте

LoadPackage('Primer.bpl')

в самой bpl одна формочка, проект о ней не знает...

в той формочке, которая находится в bpl в секции инитиализайтион пишу :
initialization

       
     RegisterClass(TForm1);
     ShowMessage('Проверяем выполняется ли');

Так вот ShowMessage сообщение выходит у меня...значит код выполняется...

но когда я после LoadPackage
пишу FindCLass(TForm1), то этот класс не находится...
как это можно сделать правильно?

Если дадите ссылки буду признателен сильно.


Виктор   (2004-11-19 15:14:00) [3]

Покажи код. У меня работает проект который загружает формы из bpl и показывает и модально и не модально на закладках PageControl-a. Поделюсь опытом и ссылками по которым шагал на пути к познанию.


Oleon   (2004-11-19 12:30:00) [4]

Нет, я понимаю, что она на диске должна находиться...
Но как так сделать, чтобы exe-шник не знал какую ему bpl подсунут...
я так попробовал подгрузить отвлеченную bpl, а в этом bpl в одной из форм в секции Initialization прописал RegisterClass( TForm1 )

LoadPackage прошел нормально, но вот из приложения это зарегистрированный класс не находится...

это можно как-то побороть или это вообще неправильный подход?
спасибо.


Amoeba   (2004-11-18 15:08:00) [5]


> SiJack ©   (18.11.04 14:56) [4]

Задай свой вопрос в новой ветке, а то его здесь могут и не увидеть.


SiJack   (2004-11-18 14:56:00) [6]

Доброго времени суток!
Не ответите и на мой вопрос связанный с bpl
Соответственно создаю проек с пустой формой, потом засовываю
ее в пакет компилю получаю bpl. В моем проекте загружаю bpl. Это понятно.
Вопрос: теперь чтобы показать форму нужное ее создать. Я просто перед показом ее проверяю созданаона или нет если нет то создаю.
Может это не совсем правильно ? Подскажите


Amoeba   (2004-11-18 12:52:00) [7]


> Oleon ©   (18.11.04 12:22) [2]
> А можно так сделать, чтобы все bpl хранилась в базе.
> Во время запуска модуля брались оттуда и уже выполнялось
> LoadPackage...

Н а момент загрузки BPL должна находиться на диске, а как она туда попадет - дело 10-е.


Oleon   (2004-11-18 12:22:00) [8]

А можно так сделать, чтобы все bpl хранилась в базе.
Во время запуска модуля брались оттуда и уже выполнялось LoadPackage...

или так нельзя.
Т.е. чтобы в exe не прописывалось какие bpl я ему подсуну...


Shaman_Naydak   (2004-11-17 19:40:00) [9]

у тя и пакет и приложение должно компилироваться с включенной галочкой "использовать пакеты". Для того, чтобы на 2их использовалась одна и та же копия vclx.bpl
соответственно


Наверх

Титульная страница Поиск, карта сайта Написать письмо