Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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.

Předmět Autor Datum
Obávám se, že v DLL dojde k nesprávnému volání komponent (volá se jiná komponenta než má). Použij na…
Rce 10.11.2007 23:26
Rce
Jestli jsem to dobře pochopil, takže mám vytvořit BPL a to pak volat ?? To nezní špatne.:-):i:
virus 10.11.2007 23:33
virus
Tak tak. Voláš to jako by to bylo součástí programu, vůbec se nestaráš, že to tam není, jen uvedeš v…
Rce 10.11.2007 23:50
Rce
No BPL jsem vytvořil ale když ji dám načíst jako loadlibrary() tak hodí chybu button se nevytvoří. N…
virus 11.11.2007 00:36
virus
BPL vůbec nenačítáš přes LoadLibrary (), ta se natáhne sama. V projektu (pro Delphi7) na hlavním pro…
Rce 11.11.2007 00:44
Rce
Aha takže klasický způsob jako když dělám componentu ::) diky moc už je to OK. poslední
virus 11.11.2007 01:04
virus

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ý.

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.

Zpět do poradny Odpovědět na původní otázku Nahoru