Q&A

  • MDI Child Form 에서 Handle로 Form 참조하기
기존 프로그램은
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 을 찾을수 없어서 그러는거 같은데..
이럴때는 어떤 방식으로 해야 하는지 가르쳐 주시기 바랍니다..
정만..난감합니다...
아시는분.. 리플좀 달아 주시기 바랍니다...

그럼 이만... ㅠㅠ...


1  COMMENTS
  • Profile
    최용일 2002.05.11 02:55
    안녕하세요. 최용일입니다.

    폼생성할때 고유번호를 붙여서 구별하는 방법도 있구요, 하나의 클래스당 한상 하나의 폼(인스턴스)만존재한다면 타입비교를 해도 되구요...

    // 생성하기
          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;

    ^^ 항상 즐코하세요...