제가 MDI폼을 하나 만들고 있는데요.. 그 자식폼MDIChild폼을 호출하고
싶은데 우찌 하면 되는지 좀 알고 싶어서요ㅡㅡ..
죄송하지만 좀 자세히 설명을 주시면 감사하겠습니다.
제가 아직 초보라서 넘 어렵게 설명을 해 주시면 이해하기가 힘들것 같아서요,,
그리고 MDI폼을 만들때 단순히 메인폼의 폼스타일을 MDIForm으로 하고
그 밑의 폼들을 MDIChild라고만 선언해 두면 그것이 MDI가 되는건지도
알고 싶어여ㅡㅡ...
부탁드립니다.
먼저 답변 감사드립니다.
child폼을 호출할때의 소스가 다음과 같습니다.
procedure Tfrmmain.CMS2Click(Sender: TObject);
begin
cms2000F := TCms2000F.Create(Application);
Cms2000F.show;
end;
프로그램을 실행하여 버튼을 클릭하면...
'Access Violation at address 0042EEB8 in module 'PRJCMS.EXE'
Read of Address FFFFFFFF' 이런 메세지가 뜨면서 child폼이 나타납니다.
이건 무슨 에러인가요,, 에러라면 child폼이 안 나타나야 정상 아닌가요?
그리고 물론 님께서 말씀해주신것은 그전에 제가 다 해놓았던 거구요,,,
답변 부탁드립니다.
그러나..MDICHILD 를 호출하기에 앞서 메모리관리등 여러 측면에서.. 고려하였을때,
프로젝트 화일에서
program HQCS;
...
begin
Application.Initialize;
Application.Title := 'QCS-HAN GLAS';
Application.CreateForm(TQDM, QDM);
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TChildForm, ChildForm); //이부분을 없애줍니다.
Application.Run;
end.
주석처리한 부분을 업애주시고..
child 부분을 호출하실때..
procedure TMainForm.MM_InspFlagClick(Sender: TObject);
begin
Func_TopMessage('Running Program..');
If FindComponent('Frm_iInspflag') = nil Then
Frm_iInspflag := TFrm_iInspflag.Create(Mainform);
Frm_iInspflag.Show;
Func_TopMessageOut;
end;
이런식으로 호출하시면 되겠습니다.
또한 Child 폼이 종료시에
OnClose 부분에
Action := Cafree;
를 넣어주세요.
마지막으로 호출하는 부모에 차이들폼의 unit 명을
use 절에 추가하여 주셔야 합니다.
implementation
{$R *.dfm}
아래 부분에
uses DM, uChildForm; 이런식으로