Q&A

  • 폼이름을 아는데.. 그 폼의 함수를 어떻게 호출하죠?
안녕하세요..

현재 active된 폼의 이름을 구해서.. 그 폼에 있는 함수를 호출하려고 하는데요..

어떻게 해야할지 모르겠어요...

많은 도움 부탁드립니다.^^;

아래는 제가 사용한 코딩인데요.. 한번 봐주세요..



if MDIChildCount > 0 then begin

for I := 0 to MDIChildCount - 1 do begin

if MDIChildren[I] = ActiveMDIChild then

begin

Frm_Name := MDIChildren[I].Name;

end;

end;

end;



Frm_Name.Input <= 이부분의 Frm_Name. 하는 부분을 어떻게 구현해야죠?..

//Input는 현재 active된 폼에 구현되어진 함수명



2  COMMENTS
  • Profile
    오범석 2001.03.03 09:06
    혹시 아실지 모르지만 델파이에서는 폼을 상속 받아서 사용할수 있습니다.

    기본폼을 만들고 이 폼을 상속해서 사용하세요.



    모르신다면 책을 찾아서 공부하시고요..



    기본적인 내용을 설명드리면...



    일단 새로운 폼을 만들고 여기에 공통적인 선언이나 폼 디자인을 해 놓으세요.

    예를들어 하시려는 것은 각 폼에 있는 Input 이라는 메쏘드를 호출하려고

    하시는 거니까 이 걸 다음과 같은식으로 선언해 놓으면 되겠죠.



    그리고 Input 이라는 메쏘드를 상속받아 쓰려고 하는것이기 때문에

    virtual 과 abstract 지시자를 지정해 주셔야 하고요.



    TInputForm = class(TForm)

    public

    procedure Input; virtual; abstract;

    end;



    그리고 이 폼은 MDI Child 폼이니까 오브젝트 인스펙터에서 FormStyle 프로퍼티를

    fsMDIChild 로 바꿔주시고요...



    File->New 를 하시면 현재 프로젝트 이름과 같은 탭이 하나 있을것입니다.

    여기에 방금전에 만든 InputForm 이라는 폼이 보이죠.

    아래 보시면 라디로 버튼으로 Inherit가 선택되어 있는걸 보시게 될겁니다.

    해당 폼의 디자인과 속성들 상속받아 새로운 폼을 만들겠다는 얘기죠.

    'OK' 를 누르시면 TInputForm 의 모든 속성을 물려받은 새로운 폼이 생깁니다.



    새로 생성된 폼은 TForm 을 곧바로 상속받은게 아니고 TInputForm 을 상속 받은게

    되죠.

    그리면 여기서 실제로 Input 메쏘드를 오버라이딩해서 원하는 기능을 구현해

    놓으세요.



    unit IForm1



    TInputForm1 = class(TInputForm)

    public

    procedure Input; override;

    end;

    .

    .

    .



    procedure TInputForm1.Input;

    begin

    // 여기에 기능 구현

    end;



    //-------------------------------------------------------------



    unit IForm2



    TInputForm2 = class(TInputForm)

    public

    procedure Input; override;

    end;

    .

    .

    .



    procedure TInputForm2.Input;

    begin

    // 여기에 기능 구현

    end;



    //-------------------------------------------------------------



    이런식으로 원하시는 폼들을 다만들었으면 다음과 같이 구현을 해주면 되겠죠.



    if Assigned( ActiveMDIChild ) and ActiveMDIChild.InheritsForm( TInputForm ) then

    begin

    TInputForm(ActiveMDIChild).Input;

    end;



    그럼 저는 이만..



    김은희 wrote:

    > 안녕하세요..

    > 현재 active된 폼의 이름을 구해서.. 그 폼에 있는 함수를 호출하려고 하는데요..

    > 어떻게 해야할지 모르겠어요...

    > 많은 도움 부탁드립니다.^^;

    > 아래는 제가 사용한 코딩인데요.. 한번 봐주세요..

    >

    > if MDIChildCount > 0 then begin

    > for I := 0 to MDIChildCount - 1 do begin

    > if MDIChildren[I] = ActiveMDIChild then

    > begin

    > Frm_Name := MDIChildren[I].Name;

    > end;

    > end;

    > end;

    >

    > Frm_Name.Input <= 이부분의 Frm_Name. 하는 부분을 어떻게 구현해야죠?..

    > //Input는 현재 active된 폼에 구현되어진 함수명

    >

  • Profile
    미남과암야수 2001.03.03 07:03
    내용 없다고 분명히 말했는 디요...



    건강하세여...