만약 DBEdit가 있는 폼이 form1 이고 DBGrid가 나와야되는 폼이 필요하다면
델파이에보면 MainMenu의 File 의 NewForm 을 선택하시면 폼이 하나 생길거구요. (form2라고 가정하구요)
그럼 form2에 dbgrid를 올려놓으시면 됩니다.
그런데... 이상태에서 실행시키면 form1만 보이지만... 실제로 form2도 같이 생성이 되어있게됩니다. 사용하지도 않는데도 말이죠.
님이 필요하신건... dbedit를 클릭할때 동적으로 생성시키실려고 하기때문에..
MainMenu의 Project의 Options를 선택하시면...
화면에 auto-create forms 와 Available forms 가 있습니다.
말그대로... 왼쪽에 있는건 실행시 자동생성되는 폼이고 오른쪽은 그렇지 않지요. 아마 form1, form2가 다 왼쪽에 있을겁니다.
form2를 오른쪽(Available forms)로 옮기세요.
그리고... 이제 처음 프로그램실행시에 폼이 생성되지 않게되겠죠?
그럼..이제 동적으로 생성시키는 부분에 코딩을 작성하시면 됩니다.
form1의 DBEdit Click 이벤트에... 아래와 같이 기입합니다.
form2 := Tform2.create(self);
form2.showmodal;
form2.free;
참 컴파일할때... user절을 추가할거냐고 묻거든요. form1에서 form2를 호출하니까요. 'YES'를 누르시면 되구요.
그럼 됩니다.
폼을 생성하고 보여줄때에는 show 와 showmodal이 있는데..
아시겠지만.. modal 폼은 생성된 폼이 종료될때까지는 다른 폼은 사용할수가 없습니다. 그래서 폼생성하고, Modal 형태로 띄우고나서 Modal폼이 종료될면 .. 그때 free 로 메모리를 해제하게 됩니다.
만약 폼을 form.show; 로 호출할 경우에는 바로 free문이 실행되어서 폼이 생성되었다가 해제되거든요.
그럴때는 form2.free 문을 지우고, form2의 close 이벤트에 Action:=Cafree; 구문을 입력해주시면 종료시 메모리에서 해제시켜주는걸로 압니다.
그럼 수고하세요.
모달폼 하나 만들어서 DBGrid 하나 갔다놓으면 되겠네요.
모달폼에 관한 것은 여기 게시판 찾아보면 많이 나와있습니다.
허접 답변이었습니다.
그럼....