저는 아주 단순하게 동적생성을 할려고 하는데요....
다른것이 아니고 워드 같은거 보면은 새창하면 기존창 가만히 있고 다시 창하나
나오는데 그걸 구현하고 싶어서 해보는 중에 폼은 계속 mdi 부모폼 밑으로 만들어
지는데 새창에 들어갈 RichEdit가 생성이 안되는 상황이 생겼습니다...
생성이 된건지 안된건지 .... ㅜㅜ
새로 생성된 폼에 RichEdit가 안보입니다.....
제 생각에는 폼 만들고 RichEdit만들고 등등 하면은 될꺼 같은데 구현이 쉽지가 않네요
코드에서 잘못된부분이 있는것인지....
확인좀 해주세요... 조언도 해주시고요....^^;
procedure Tmainform.ToolButton1Click(Sender: TObject);
var
selform: TForm;
me:TRichEdit;
begin
wincount:=wincount+1; <-전역변수
selform:=TForm.CreateNew(Self); <-mdi자식폼 생성중
selform.Name:='Form' + inttostr(wincount); <-이름 지정
selform.FormStyle:=fsMDIChild; <-폼형식
selform.WindowState := wsNormal; <-창 위치
selform.Caption:='새창'+inttostr(wincount); <-캡션
selform.Show; <-창보이기
me := TRichEdit.Create(FindComponent('Form'+inttostr(wincount)));
<-mdi 자식폼에서 이름이 위에 바로 생성된 form1이라는 폼위에서 생성하라는.....
한번 새창 생성시 폼이름은 form1 두번째는 form2등등으로 나갑니다
me.Name:='RichEdit' + inttostr(wincount);
me.Width:=selform.Width;
me.Height:=selform.Height;
end;
이렇게 된 코드 입니다... 문제가 어디있는건지 알수 가 없네요...
Create에서 인자로 넘겨주는 것은 Owner구요... Owner는 자신이 파괴될때 자신이 소유한 컴포넌트를 파괴하는 등의 역할을 하구요.. 실제 컨트롤이 보이려면 Parent속성이 지정되어야 합니다. 디자인 타임에 폼위에 컨트롤을 올려놓으면 자동적으로 컨트롤의 Parent는 폼이 되는데요.. 동적으로 생성할 때는 Parent를 직접 지정해주어야 합니다.
me.Parent := selform;