저.. MDI폼에서 dll로 만들어지 child폼을 호출하려고 하는데, 잘안됩니다.
자료실의 최용일님이시던가? 예제로 올려놓은걸 보았는데... 잘모르겠구..
...님께서 답변도 해 주셨으나 아직도 해결치 못하고...님의 답변을 무색케 하고 있습니다.
아래 프로지저가 child폼의 pas에 들어가 있고----------------------------------
procedure cu01_OpenForm(ADOConnection : TADOConnection; App : TApplication; Pform : TForm);
begin
App.CreateForm(TfmCU01, fmCU01);
요기서 파란불이 들어옵니다. fmCU01.ADOTable.Connection := ADOConnection;
fmCU01.ADOTable.Active := True;
fmCU01.Show;
end;
-------------------------------------------------------------------------------
메인에서는-----------------------------------------------------------------------
.. 생략
type
TOpenFormProc = procedure(ADOConnection : TADOConnection; App : TApplication) ; Stdcall;
var
fmkdt001: Tfmkdt001;
implementation
uses kdtdm;
{$R *.DFM}
procedure Tfmkdt001.OpenForm(DllName : string);
var
H : THandle;
OpenFormProc : TOpenFormProc;
begin
H := LoadLibrary(PChar(DllName));
try
if H < 32 then
begin
showMessage('DLL을 찾을 수 없습니다.');
exit;
end;
@OpenFormProc := GetProcAddress(H, PChar('cu01_OpenForm'));
if @OpenformProc = nil then
begin
showMessage('해당프로시저가 없습니다.');
exit;
end;
OpenFormProc(dfmkdt.ADOConnection, Application);
finally
FreeLibrary(H);
end;
end;
--------------------------------------------------------------------------
버튼2를 누르면 -----------------------------------------------------------
procedure Tfmkdt001.ToolButton2Click(Sender: TObject);
begin
OpenForm('customer.dll');
end;
---------------------------------------------------------------------------
에러는
Project kdt.exe raised exception class EInvalidoperation with message 'Cannot create form. No MDI forms are currently active'. Process stopped. Use Step or run to continue.
라고 납니다.