기존 프로그램은
Main Form 에서 Child Form 을 Create 시킬때는
직접 Form 명을 사용하여
Form1 := TForm1.Create(Application);
Form1.show; 라는 방식으로 처리를 했습니다..
지금은 자료실에 있는 MDI 방식을 따서
MyFormClass := TFormClass(GetClass(sClass)); //클래스를 찾아온다
if MyFormClass <> nil then
begin
WorkForm := MyFormClass.Create(Application);
WorkForm.Show;
end;
방식으로 만들어 보았습니다..
그런데 문제는... 출력물에서....
Form1 이 조회조건 넣는 곳이고
Form2 가 프린터 화면입니다...
Form2 에서 Form1 에 있는 객체를 참조할때는..
예를들어
Form2 에서 Form1 에 있는 MaskEdit1 의 날짜를 가지고 온다 하며는
Form2 소스 상에서
Form1.MaskEdit1.Text 하며는 Text 를 가지고 올수가 있었습니다..
그러나 이후에 실행한 Class 를 찾아와서 하는 방식으로 하며는
Form1.MaskEdit1.Text 라는 명령문이 먹지를 않습니다..
Handle 을 찾을수 없어서 그러는거 같은데..
이럴때는 어떤 방식으로 해야 하는지 가르쳐 주시기 바랍니다..
정만..난감합니다...
아시는분.. 리플좀 달아 주시기 바랍니다...
그럼 이만... ㅠㅠ...
폼생성할때 고유번호를 붙여서 구별하는 방법도 있구요, 하나의 클래스당 한상 하나의 폼(인스턴스)만존재한다면 타입비교를 해도 되구요...
// 생성하기
WorkForm := MyFormClass.Create(Application);
WorkForm.Tag := 1000;
WorkForm.Show;
// 찾기
for Index := 0 to Screen.FormCount - 1 do
begin
if Screen.Forms[Index].Tag = 1000 then
begin
Form1 := TForm1( Screen.Forms[Index]);
ShowMessage( Form1.MaskEdit1.Text );
Break;
end;
end;
^^ 항상 즐코하세요...