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

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

Создание компонент из DLL [D5, Win95/98]


Huliganka ©   (2002-04-24 22:28:00) 

Здравстуйте, люди добрые!

В общем, есть следующая проблема, и я не знаю, как её побороть. Есть DLL, в которой всего навсего одна функция такого вида

function AddBtn(AOwner: TWinControl): TButton;
begin
Result := TButton.Create(AOwner);
end;

Далее, есть приложение, которое вызывает эту функцию (btn := AddBtn(self);). Короче говоря, хочу, чтобы на мою форму добавилась ещё одна кнопка. Так вот, функция вызывается нормально и возвращает то, что нужно, но при попытке присвоить родителю новой кнопки собственно мою форму (btn.Parent := self;) страшно ругается, говорит "Cannot assign TFont to a TFont". Вот, собственно и всё.

Может, кто знает, в чём тут проблема и как с ней бороться?? Буду очень благодарна. Заранее спасибо!


Игорь Шевченко   (2002-04-25 09:58:00) [1]

День добрый,

Нельзя так делать :-)
Если очень хочется, то надо использовать пакеты (BPL), в которых
создавать кнопку и передавать ее в основное приложение. Можно создавать кнопку в основном приложении по факту наличия DLL, к примеру. Дело в том, что TFont в EXE и TFont в DLL - это ДВА РАЗНЫХ КЛАССА, которые ничего друг о друге не знают, и приведены оператором AS друг к другу быть не могут :-( А именно это приведение и пытается выполниться при присвоении btn.Parent := Self.

Можно еще попробовать при создании кнопки в DLL указать ParentFont := false, но где-то еще вы обязательно натолкнетесь на несовместимость классов в DLL и в EXE.

С уважением,

С уважением,


Наверх

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