![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание компонент из 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.
С уважением,
С уважением,