Q&A

  • DLL로만든 MDI의 Child폼의 호출시 Error


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

라고 납니다.





0  COMMENTS