S.a. Arkadaşlar. Bir projem var ve bu projemde modüller için dll ler kullanıyorum. Remote Data Module diye bir şey var...Tüm projede dll lerin sadece bir Datamodule bağlanması gibi bir şey söz konusumu...Var ise yolu nedir nasıl yapılabilir. Örnekleri mevcutsa nasıl ulaşabilirim. Yardımcı olursanız çok sevinirim.
İyi Çalışmalar
Delphi 2006 Remote Data Module
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
evet bu mümkün dll in içine parametre olarak Datanesi ve oturumu taşıyarak diger dll lerde aynı data bağlantısını kullan bilirsin
Örnek Olarak şöyle yapa bilrisin
Kolay gelsin
Örnek Olarak şöyle yapa bilrisin
Kod: Tümünü seç
T_dllyukle = procedure (ParentApplication: TApplication;Database:TIBDatabase;Transaction: TIBTransaction); stdcall;
“Kolaylaştırın, zorlaştırmayın, müjdeleyin, nefret ettirmeyin.”
Ana uygulamaya
dll ede ise
Kod: Tümünü seç
type
TShowFrm = procedure(App: TApplication; Scr:TScreen; Database: TDatabase; S:TSession); stdcall;
private
hInstance: THandle;
{ Private declarations }
procedure TForm1.Subeler1Click(Sender: TObject);
var
AFunc: Pointer;
begin
if hInstance=0 Then
hInstance := SafeLoadLibrary('Mydll.dll', SEM_NOOPENFILEERRORBOX);
try
Pointer(AFunc) := GetProcAddress(hInstance, PChar ('ShowFrm'));
TShowFrm(AFunc)(Application, Screen, Database,Session);
{Open the child form}
except
on e: exception do ShowMessage(e.Message);
end;
end;
Kod: Tümünü seç
ibrary mydll;
uses
SysUtils, Classes, Forms, Windows, Dialogs, DBTables,
MyForm in 'MyForm.pas' {Form2},
{$R *.res}
var
AppDLL: TApplication;
ScrDLL: TScreen;
Databs: TDatabase;
procedure MyDLLProc(Reason: Integer);
begin
try
if Reason = DLL_PROCESS_DETACH then
begin
Application := AppDLL;
Screen := ScrDLL;
end;
except
on e: exception do ShowMessage(e.Message);
end;
end;
procedure ShowFrm(App:TApplication; Scr: TScreen; Database: TDatabase; S:TSession); stdcall;
begin
Application := App;
Screen := Scr;
Databs := Database;
Session:=s;
App.CreateForm(TForm2, Form2);
Form2.TTanimlar.DatabaseName:=Databs.DatabaseName;
Form2.Show;
End;
end;
exports
ShowFrm;
begin
try
AppDLL := Application;
ScrDLL := Screen;
DLLProc := @MyDLLProc;
except
on e: exception do ShowMessage(e.Message);
end;
end.
“Kolaylaştırın, zorlaştırmayın, müjdeleyin, nefret ettirmeyin.”