폼 a,b,c가 있는데요...
폼 a는... 폼b에서 Create시킬때도 있고, 폼C에서 Create시킬때도 있답니다...
두 폼(b,c)에서 create시켜야 할 폼의 모양이 같거든여...
그런데, 폼B가 불렀을때 폼A에서 일어날 이벤트와... 폼C가 불렀을때 폼A에서 일어날
이벤트를 다르게 주고 싶어요...
폼A의 똑같은 OK버튼을 눌렀을때, 폼B에서 부른 폼A의 OK버튼 이벤트와, 폼C에서 부른 폼A의 OK버튼 이벤트를 다르게 주고 싶다는 말이져^^;;
좋은 방법이 없을까요?
만약 이게 해결 안되면... 똑같은 폼(A)를 두개나 만들어야 하는데...!_!
제가 만드는 프로그램에 이런류의 폼들이 좀 많거든여...
도와주세여....
폼A가 생성될때... B가 생성시켰는지, C가 생성시켰는지만 알면... 될텐데...
그 방법을 잘 모르겠어요...
그럼... 오늘 하루도 즐겁고 행복하게 보내시구... 감기 조심하세요...^^
> 폼 a,b,c가 있는데요...
>
> 폼 a는... 폼b에서 Create시킬때도 있고, 폼C에서 Create시킬때도 있답니다...
>
> 두 폼(b,c)에서 create시켜야 할 폼의 모양이 같거든여...
>
> 그런데, 폼B가 불렀을때 폼A에서 일어날 이벤트와... 폼C가 불렀을때 폼A에서 일어날
>
> 이벤트를 다르게 주고 싶어요...
>
> 폼A의 똑같은 OK버튼을 눌렀을때, 폼B에서 부른 폼A의 OK버튼 이벤트와, 폼C에서 부른 폼A의 OK버튼 이벤트를 다르게 주고 싶다는 말이져^^;;
>
> 좋은 방법이 없을까요?
>
> 만약 이게 해결 안되면... 똑같은 폼(A)를 두개나 만들어야 하는데...!_!
>
> 제가 만드는 프로그램에 이런류의 폼들이 좀 많거든여...
>
> 도와주세여....
>
> 폼A가 생성될때... B가 생성시켰는지, C가 생성시켰는지만 알면... 될텐데...
>
> 그 방법을 잘 모르겠어요...
>
> 그럼... 오늘 하루도 즐겁고 행복하게 보내시구... 감기 조심하세요...^^
폼 A를 어떻게 Create하였는가에 따라 방법이 틀려집니다.
호출하는폼인 B,C에서 아래처럼 Create하였다면
procedure TFormB.Button1Click(Sender: TObject);
var
A : TFormA;
beign
A := TFormA.Create(Self);
A.ShowModal;
end;
위 TFormA.Create(Self)에서 Self는 폼B(또는 폼C)를 의미하므로
생성된 폼A의 Owner가 폼B 또는 폼C가 되는것입니다.
폼A의 OK버튼 Click 이벤트프로스져에서
ShowMessage(Self.Owner.Name);
해보면 'FormA' 또는 'FormB' 가 보여질것이고 이것을 통해
자신을 Create한 모폼을 구별할 수 있습니다.
뿐만 아니라 Uses절에 Uses UnitB, UnitC라고 포함하지 않고도
폼A에서 폼B 또는 폼C에 있는 모든컴포넌트를 Owner프로퍼티를 활용해서 제어할 수 있습니다.
다른방법 즉 폼A를 Create하는 함수(프로시져)를 따로 정의한 경우에는
호출하는 폼에서 Self(자신)을 인수로 넘겨 Create를 하면 됩니다.
이러한 방법은 폼자신(Self)을 인수로 하지않고 폼내의 어떤 컴포넌트를 인수로 하더라도 호출한 폼의 모든 컴포넌트를 제어할 수 있으며 잘 이해하고나면 여러 방면으로 유용하게 활용할 수 있습니다.
설명하는 요령이 부족해서 이해되셨는지 모르겠네요.