DLL+Forma+DataModule - problem

0

Stworzylem sobie projekt biblioteki DLL do ktorego dolaczylem forme i DataModule w ktorym mam ADOQuery i DataSource ktory chce wykorzysatac w DBGridzie znajdujacym sie na formie dll-ki. Pomozej kod samej biblioteki dll


library KontrahDLL;

uses
  SysUtils,
  Classes,
  Forms,
  ComCtrls,
  Controls,
  uKontrah in 'uKontrah.pas' {frmKontrah},
  _dmKontrah in '_dmKontrah.pas' {dmKontrah};

{$R *.res}

procedure Load(TabSheet:TTabSheet);
var
  Form        : TfrmKontrah;
  DataModule  : TdmKontrah;
begin
  Form:=TfrmKontrah.Create(TabSheet);
  Form.ParentWindow:=TabSheet.Handle;
  DataModule := TdmKontrah.Create(TabSheet);
  Form.Show;
  TabSheet.Caption := Form.FCaption ;
  TabSheet.Tag:=integer(Form);
end;

procedure UnLoad(TabSheet:TTabSheet);
begin
  TfrmKontrah(TabSheet.Tag).Free;
end;

exports
  Load, UnLoad;

begin
end.

I teraz mam problem taki ze w jakis dziwny sposob nie chce sie utworzyc obiekt DataMOdule w linijce

DataModule := TdmKontrah.Create(TabSheet);

Forma "Form" sie tworzy a DataModule nie. Nie ma przy tym zadnego bledu. A obiekt ten potrzebuje wykorzystac w Form.Show przypisujac do Query, connection zwracane przez inna DLL-ke. Moze ktos doradzi co moze byc nie tak.

0
  1. cud, że się nie sypie
  2. o stdcall słyszał?
  3. o przekazywaniu parametrów do i z dll czytał?
  4. wielki komentarz, który wyskakuje przy stworzeniu nowego dlla czytał?
  5. na forum szukał? (i nie mów, że nie ma bo ostatnio podawałem, jak i co należy przekazać do dlla aby poprawnie i bezboleśnie móc wywoływać z niego formy)

Ogólnie cały kod jakiś dziwny. Czemu

var
  Form        : TfrmKontrah;
  DataModule  : TdmKontrah;

nie dasz jako zmienne globalne, tylko później jakieś dziwne konstrukcje stosujesz

 TabSheet.Tag:=integer(Form);
...
 TfrmKontrah(TabSheet.Tag).Free;

Może na początek wypadało by poczytać najpierw o dllach a dopiero potem się za to brać :>. Na 4p jest dobry art o tym, a na BSC Polska jest art o "Bazy danych a biblioteki DLL"

0

Widze ze chyba niejasno opisalem o jaki problem mi chodzi. Nie mam problemu z przekazywaniem do i z dll-ki parametrow. To dziala. Moze i "cudem" ale dziala. Problem tkwi w tym ze nie chce sie utworzyc obiekt DataModule. Stdcall tez nie pomaga. Probowalem. Chociaz nie wiem jaki on moze miec wplyw na tworzenie obiektu. Jezlei ma to moze ktos mi to wyjasni.
Probowalem robic Create z roznymi Ownerami ale niestety to nie pomaga.

0
przemlinek napisał(a)

Widze ze chyba niejasno opisalem o jaki problem mi chodzi. Nie mam problemu z przekazywaniem do i z dll-ki parametrow. To dziala. Moze i "cudem" ale dziala. Problem tkwi w tym ze nie chce sie utworzyc obiekt DataModule. Stdcall tez nie pomaga. Probowalem. Chociaz nie wiem jaki on moze miec wplyw na tworzenie obiektu. Jezlei ma to moze ktos mi to wyjasni.
Probowalem robic Create z roznymi Ownerami ale niestety to nie pomaga.

Widzę, że nic z tego co napisałem nie dotarło. Cóż kombinuj dalej a może wymyślisz coś całkiem nowego. Zauważ tylko, że to jednak Tobie coś nie działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1