Q&A

  • 공용폼열때 어디서 열었는지 알고싶어요..
폼a1,폼a2가 있고 공용폼인 a3가 있습니다.

그런데 폼 a3가 어느폼에서 Create 됐는지 알수 있는 방법이 있을까요?

그에따라 실행문을 틀리게 하려고 합니다. 아래와 같이요.



procedure Ta1form.ldgrRightBtnClick(Sender: TObject);

begin

Pop_up := Ta3.Create(self);



------------------------------------------------



procedure Ta2form.ldgrRightBtnClick(Sender: TObject);

begin

Pop_up := Ta3.Create(self);



-------------------------------------------------



이렇게 두군데서 Create 했을때.....





procedure Ta3.FormActivate(Sender: TObject);

begin

if 폼a1 에서 호출 then

begin

실행문장 1;

실행문장 2;

end

else if 폼a2 에서 호출 then

begin

실행문장 3;

실행문장 4;

end;

end;

이렇게 하고 싶습니다.

Sender를 사용하려고도 했는데 잘 안되네요...

여기서 막혀서 끙끙거리다 도움 부탁드리고자 올려봅니다.

읽어주셔서 고맙구요.. 아시면 꼭!꼭! 도움 부탁드려요.



3  COMMENTS
  • Profile
    최영준 2001.06.22 21:16
    도움 고맙습니다.

    결국은 public 변수를 써서 create 할때마다 값을바꿔서

    if문을 쓰면서 해결했습니다.

    많은 도움 됐습니다.

    다시 한번 감사드려요.

  • Profile
    Ziker 2001.06.21 02:45
    안녕하세요 Ziker 입니다.



    다음 Function을 사용하시면 될것 같습니다.



    Function CheckSameForm(Application:TComponent; Hint:String):Boolean;

    Var

    Loop : Integer;

    Begin

    Result:= False;

    For Loop:= 0 to Application.ComponentCount-1 do

    With Application do

    If Components[Loop].ClassType = TfmChatRoom then

    If TForm(Components[Loop]).Hint = Hint then

    Begin

    If IsIconic(TForm(Components[Loop]).Handle) then

    ShowWindow(TForm(Components[Loop]).Handle, SW_RESTORE)

    Else TForm(Components[Loop]).BringToFront;

    Result:= True;

    Exit;

    End;

    End;



    ==================================================================

    설명:



    폼을 뛰울때 같은 폼이 존재 하는지를 체크하는 함수 입니다.

    같은 폼의 기준을 체크 하는 방법이 TComponent와 hint가 같으면

    같은 폼으로 간주를 하도록 하였습니다.



    쉽게 설명 드리자면.. TComponent의 hint는 Form의 Hint입니다.

    위 함수를 다음과 같이 응용 할 수 있습니다.



    // 같은 폼이 있나 없나 뒤진다..

    If CheckSameForm(Application, '1') then Exit;

    // 같은 폼이 없으면 생성하고

    fmTest1:= TFmTest1.Create(Application);

    // 힌트 준다..

    fmTest1.Hint = '1';





    그럼..



    Good Luck!

    ==================================================================





    최영준 wrote:

    > 폼a1,폼a2가 있고 공용폼인 a3가 있습니다.

    > 그런데 폼 a3가 어느폼에서 Create 됐는지 알수 있는 방법이 있을까요?

    > 그에따라 실행문을 틀리게 하려고 합니다. 아래와 같이요.

    >

    > procedure Ta1form.ldgrRightBtnClick(Sender: TObject);

    > begin

    > Pop_up := Ta3.Create(self);

    >

    > ------------------------------------------------

    >

    > procedure Ta2form.ldgrRightBtnClick(Sender: TObject);

    > begin

    > Pop_up := Ta3.Create(self);

    >

    > -------------------------------------------------

    >

    > 이렇게 두군데서 Create 했을때.....

    >

    >

    > procedure Ta3.FormActivate(Sender: TObject);

    > begin

    > if 폼a1 에서 호출 then

    > begin

    > 실행문장 1;

    > 실행문장 2;

    > end

    > else if 폼a2 에서 호출 then

    > begin

    > 실행문장 3;

    > 실행문장 4;

    > end;

    > end;

    > 이렇게 하고 싶습니다.

    > Sender를 사용하려고도 했는데 잘 안되네요...

    > 여기서 막혀서 끙끙거리다 도움 부탁드리고자 올려봅니다.

    > 읽어주셔서 고맙구요.. 아시면 꼭!꼭! 도움 부탁드려요.

    >

  • Profile
    하기 2001.06.21 01:20
    그냥 그럼 쉽게 하면 안될까요??

    하나의 전역변수 암꺼나 주고... Ta3을 Create하기 전에.

    변수에 특정한 값을 넣어주고...

    그 변수의 값에 따라 폼3에서 분기해 주시는것은...

    너무 조잡한가???



    최영준 wrote:

    > 폼a1,폼a2가 있고 공용폼인 a3가 있습니다.

    > 그런데 폼 a3가 어느폼에서 Create 됐는지 알수 있는 방법이 있을까요?

    > 그에따라 실행문을 틀리게 하려고 합니다. 아래와 같이요.

    >

    > procedure Ta1form.ldgrRightBtnClick(Sender: TObject);

    > begin

    > Pop_up := Ta3.Create(self);

    >

    > ------------------------------------------------

    >

    > procedure Ta2form.ldgrRightBtnClick(Sender: TObject);

    > begin

    > Pop_up := Ta3.Create(self);

    >

    > -------------------------------------------------

    >

    > 이렇게 두군데서 Create 했을때.....

    >

    >

    > procedure Ta3.FormActivate(Sender: TObject);

    > begin

    > if 폼a1 에서 호출 then

    > begin

    > 실행문장 1;

    > 실행문장 2;

    > end

    > else if 폼a2 에서 호출 then

    > begin

    > 실행문장 3;

    > 실행문장 4;

    > end;

    > end;

    > 이렇게 하고 싶습니다.

    > Sender를 사용하려고도 했는데 잘 안되네요...

    > 여기서 막혀서 끙끙거리다 도움 부탁드리고자 올려봅니다.

    > 읽어주셔서 고맙구요.. 아시면 꼭!꼭! 도움 부탁드려요.

    >