Как мога да създам панел, бутон или какъвто и да е друг визуален контрол от динамична библиотека и да го сложа в главната форма на програмата? Опитвам с нещо от сорта:
library DynCompDLL; // библиотеката
uses
ShareMem,
SysUtils,
Classes,
Controls,
ExtCtrls;
{$R *.RES}
var Panel: TPanel;
procedure CreatePanel (AParent: TWinControl; X, Y: integer);
begin
Panel:=TPanel.Create(AParent);
with Panel do
begin
Left:=X;
Top:=Y;
Caption:='DLL Panel';
Parent:=AParent;
end;
end;
exports CreatePanel;
begin
end.
В главната програма съм прехванал OnMouseDown:
procedure CreatePanel (AParent: TWinControl; X, Y: integer); external 'DynCompDLL';
// ...
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CreatePanel(Form1,X,Y);
end;
Идеята е ясна - където се щракне с мишката трябва да се създаде панел с
кода от DLL. Обаче вместо това дава грешка EConvertError: Cannot assign a
TFont to a TFont. Това става при присвояването Parent:=AParent. В кода на
проекта също съм сложил ShareMem най-отпред. Имаше нещо, свързано с
компонентите в DLL, но не се сещам какво беше. Къде бъркам?