Mam problem chce zrobić za pomocą dll tworzyć dynamicznie komponenty na panelu w formie.
kod dll-a
procedure generate(AOwner: TComponent; AParent: TWinControl); stdcall;
var
Button: TButton;
begin
Button:=TButton.Create(AOwner);
Button.Parent:=AParent;
Button.Name := 'Przycisk';
Button.Left:=10; // pozycja X przycisku na formularzu
Button.Top:=10; // pozycja Y przycisku na formularzu
Button.Width:=140; // szerokość przycisku
Button.Height:=40; // wysość przycisku
Button.Caption:='Przycisk dynamiczny'; // podpis przycisku
Button.Visible:=True; // czy przycisk widoczny?
Button.Show;
end;
lądowanie biblioteki
procedure TOknoOpcje.comboTypHostaSelect(Sender: TObject);
var
DLL : THandle;
generate : procedure(AOwner: TComponent; AParent: TWinControl); stdcall;
begin
DLL := LoadLibrary('components/vpxP.dll'); // załadowanie pliku
@generate := GetProcAddress(DLL, 'generate'); // pobranie wskaźnika do procedury
if @generate = nil then raise Exception.Create('Nie można załadować procedury');
generate(panelHost.Owner, panelHost.Parent); // wykonanie procedury
end;
I podczas próby stworzenia tych komponentów dostaję błąd "cannot assign a TFont to a TFont"