
Library DLL
Ahoj všem, mám tento kód v Delphi:
var
button:Tbutton;
Function button_x(prenos: Cardinal;formular:Tform;nazev:string;inte:integer):TButton;stdcall;
begin
Application.Handle := prenos;
button:=Tbutton.Create(Application);
button.ParentWindow:= prenos;
with button do
begin
name:='sakra'+inttostr(inte);
caption:= nazev;
top:=10*inte;
left:=10;
visible:=true;
tag:=inte;
OnClick := formular.OnClick;
show;
end;
result:=button;
end;
exports button_x;
begin
end.
Vše funguje až na jedno, při kliknutí na vytvořené tlačítko v aplikaci, ktera knihovnu volá se nic neprovede.
Jen tam je jak pro ozdobu nevraci žádnou hodnotu. Potřebuji aby se hodnota vracela, protože když příště udělám update změní se i tlačítka a další componenty.
Jak na to aby self.onclick fungoval ??
Nechci vytvářet tlačítka a componenty v aplikaci potřebuji je v knihovnách.
Obávám se, že v DLL dojde k nesprávnému volání komponent (volá se jiná komponenta než má). Použij naprosto shodně místo DLL balíček BPL, nic měnit nemusíš, bude to fungovat shodně, má to naopak spoustu výhod - dokonce funguje "pascalská" vazba - nepotřebuješ EXPORTS, můžeš to volat rovnou názvem funkce jak jsi zvyklý.
Jestli jsem to dobře pochopil, takže mám vytvořit BPL a to pak volat ?? To nezní špatne.

Tak tak. Voláš to jako by to bylo součástí programu, vůbec se nestaráš, že to tam není, jen uvedeš v hlavním programu, že vyžaduje onu BPL a je to.
No BPL jsem vytvořil ale když ji dám načíst jako loadlibrary() tak hodí chybu button se nevytvoří. Nák se mi to nedaří.
BPL vůbec nenačítáš přes LoadLibrary (), ta se natáhne sama. V projektu (pro Delphi7) na hlavním programu (Něco.exe) klikneš pravou packou na ten název exáče, vybereš Options, ucho Packages, klik na tlačítko Add..., nalistovat to tvoje BPL a odklikat všechna Ok. Toť vše. O zavedení balíčku, o propojení s hlavním programem se postará systém Delphi sám. V tom je ta krása, že už se o nic nestaráš, v programu to svoje BPL uvedeš normálně v Uses kde potřebuješ a normálně voláš jako by procedura byla součástí programu.
Aha takže klasický způsob jako když dělám componentu
diky moc už je to OK.