Q&A

  • DLL의MDI Child를 Call하고나면 버튼이 사라지네요??
일단은 읽어주셔서 감사합니다.

DLL에 form을 만들고 MDI Main에서 그 form을 MDIChild로 call하는 것은

'파워러브 델파이 98년8월호'의 소스를 이용하여 성공했습니다.

그러나 기쁨도 잠시...

Button에서 call을 하고나면(MDIChild form call 함수 from DLL: ShowMdiChildForm)

호출한 button이 사라지고 마는 것이어요...

어데로 갔나 나의 버튼...?

그래서 버튼이 정말로 사라졌는지(free or destroy) components[]에서 뒤져보면 있거던요..? Button1.Click도 되고...

그런데 menu에서 그 함수를 call하면 menu는 그대로 있어요...



그래서 ShowMdiChildFrom을 call하고나서 repaint를 호출하니

application이 사라지네요..?? 참내..task bar에는 있는데...

무엇이 문제일까요...?

비슷한 일을 당하신 분은 꼭 연락을 좀 주세요...



참고로 제 source는 다음과 같아요.

MDIMain 부분(DLL call하는 form : fsMDIForm)

================================================

procedure ShowMDIChildForm(App : TApplication);external '../AboutDll/About.DLL';



implementation



{$R *.DFM}

procedure Call_DllForm(TF : Boolean);external '../AboutDll/About.DLL'

name 'Call_DllForm';



. . . . .

procedure TForm1.Button1Click(Sender: TObject);

begin

ShowMDIChildForm(Application);

end;



============================

DLL source

library About;



uses

SysUtils,

Dialogs,

Classes,

ShellAPI,

Windows,

Forms,

Unit1 in 'Unit1.pas' {DLLForm1};



var

DLLApp : TApplication;



procedure MyDllProc(Reason : Integer);

begin

if Reason = DLL_PROCESS_DETACH then

if Assigned(DllApp) then

Application := DllApp;

end;



procedure ShowMDIChildForm(MainApp : TApplication);

var

Child : TDLLForm1;

begin

if not Assigned(DllApp) then

begin

DllApp := Application;

Application := MainApp;

end;

Child.Visible := False;

Child := TDLLForm1.Create(Application.MainForm);

Child.FormStyle := fsMDIChild ;

Child.Visible := True;

end;



exports

ShowMDIChildForm;

begin

DllApp := nil;

DLLProc := @MyDLLProc;

end.



========== 이상 ===============



0  COMMENTS