자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi bpl을 이용한 MDI 방식의 구성에서 DB커넥션의 공유는 어떻게 하는건가요?
2016.03.14 16:19
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
bpl을 이용한 MDI 방식의 구성에서 DB커넥션의 공유는 어떻게 하는건가요?
부모폼에서 fdConnection 의 포인터를 자식품으로 넘겨준 후 처리 하면 될까 했는데 생각대로 되지 않아 문의 드립니다.
---------------------------------------<부모폼 소스>-----------------------------------
......
procedure TMainForm.PackageLoad(bplFileName: string);
begin
PackageModule := LoadPackage(bplFileName);
if PackageModule <> 0 then
try
@ExecuteChild := GetProcAddress(PackageModule,'ExecuteChild');
except
ShowMessage ('Package not found');
end;
end;
procedure TMainForm.FirstForm1Click(Sender: TObject);
begin
if PackageModule = 0 then PackageLoad('pFirstForm.bpl');
if Assigned(ExecuteChild) then ExecuteChild('string parameter test', @FDConnection1);
end;
......
-------------------------------------------------------------------------------------------
-----------------------------------------<자식폼 소스>----------------------------------
unit uFirstForm;
interface
uses
......
procedure ExecuteChild(pStr: string; pFdConn: Pointer);
......
var
fmFirstForm: TfmFirstForm;
fdConn: ^TFDConnection;
......
procedure TfmFirstForm.Button2Click(Sender: TObject);
begin
FDQuery.Connection := fdConn^;
FDQuery.Close;
FDQuery.Open;
end;
procedure ExecuteChild(pStr: string; pFdConn: Pointer);
begin
TfmFirstForm.Create(Application);
new(fdConn);
fdConn := pFdConn;
end;
exports
ExecuteChild;
......
-------------------------------------------------------------------------------------------
필요한 내용만 발췌하여 소스 첨부하였습니다.
잘못된 부분이나 참조할 만한 자료가 있으면 알려주시면 감사드리겠습니다.
샘플소스도 있다면 더할나위 없겠구요~
Delphi bpl을 이용한 MDI 방식의 구성에서 DB커넥션의 공유는 어떻게 하는건가요?
2016.03.14 16:19
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
bpl을 이용한 MDI 방식의 구성에서 DB커넥션의 공유는 어떻게 하는건가요?
부모폼에서 fdConnection 의 포인터를 자식품으로 넘겨준 후 처리 하면 될까 했는데 생각대로 되지 않아 문의 드립니다.
---------------------------------------<부모폼 소스>-----------------------------------
......
procedure TMainForm.PackageLoad(bplFileName: string);
begin
PackageModule := LoadPackage(bplFileName);
if PackageModule <> 0 then
try
@ExecuteChild := GetProcAddress(PackageModule,'ExecuteChild');
except
ShowMessage ('Package not found');
end;
end;
procedure TMainForm.FirstForm1Click(Sender: TObject);
begin
if PackageModule = 0 then PackageLoad('pFirstForm.bpl');
if Assigned(ExecuteChild) then ExecuteChild('string parameter test', @FDConnection1);
end;
......
-------------------------------------------------------------------------------------------
-----------------------------------------<자식폼 소스>----------------------------------
unit uFirstForm;
interface
uses
......
procedure ExecuteChild(pStr: string; pFdConn: Pointer);
......
var
fmFirstForm: TfmFirstForm;
fdConn: ^TFDConnection;
......
procedure TfmFirstForm.Button2Click(Sender: TObject);
begin
FDQuery.Connection := fdConn^;
FDQuery.Close;
FDQuery.Open;
end;
procedure ExecuteChild(pStr: string; pFdConn: Pointer);
begin
TfmFirstForm.Create(Application);
new(fdConn);
fdConn := pFdConn;
end;
exports
ExecuteChild;
......
-------------------------------------------------------------------------------------------
필요한 내용만 발췌하여 소스 첨부하였습니다.
잘못된 부분이나 참조할 만한 자료가 있으면 알려주시면 감사드리겠습니다.
샘플소스도 있다면 더할나위 없겠구요~
엠바카데로 기술문서를 참고하시기 바랍니다.
파이어닥 DLL개발에 관련된 내용인데요. 패키지도 같은 방식으로 사용하실 수 있습니다.
http://docwiki.embarcadero.com/RADStudio/Seattle/en/DLL_Development_(FireDAC)