Q&A

  • Form을 변수로 받는 방법이 없나요?
procedure TForm.ListView1DblClick(Sender: TObject);

var

cTmpFrm : TFormClass;

fTmpFrm : TForm;

gsSel : String;

begin

cTmpFrm := nil;

fTmpFrm := nil;





gsSel = 'fAIS3040_I';



// 현재 이부분을 String으로 설정된 값을 넣었으면하는데 방법이 없는지요

(***********************************************)

cTmpFrm := TfAIS3040_I;

fTmpFrm := fAIS3040_I;

(***********************************************)

이부분을 이렇게 변경하고 싶은데 할 수 있는 방법이 없는지 잘 아시는 고수분께서 한수 가르쳐 주시면 정말 고맙겠습니다. 정말 미치겠어요.



(***********************************************)

cTmpFrm := 'T' + gsSel;

fTmpFrm := gsSel;

(***********************************************)





prcCreateForm( cTmpFrm, fTmpFrm, gsSel);

end;





procedure TForm.prcCreateForm( gClass: TFormClass; gForm: TForm; S : String);

var

i : integer ;

begin

if MDIChildCount > 0 then

begin

for i := 0 to MDIChildCount-1 do

begin

if MDIChildren[i].Name = S then

begin

MDIChildren[i].BringToFront;

Exit;

end;

end;

end;



Application.CreateForm( gClass, gForm);

end;







1  COMMENTS
  • Profile
    신인재 1999.08.12 20:02
    님이 원하시는 폼을 스트링으로 처리하는 방법은 결론을 말씀드리면



    방법이 없습니다.(논리적으로도 맞지 않지요)



    대개 이런 경우 폼이 무쟈게 많을 경우 인거 같습니다.



    뭐 조금이라두 근접한 해결방안을 생각해 본다면



    TFormClass의 배열형을 생각보십시요.



    UserFormClass : array[0..MaxCount] of TFormClass;



    이런 식으로 말이죠. 이렇게 하면 배열의 인덱스를 사용할 수 있게 되어



    메인메뉴상에서 폼을 연다고 하면 매뉴항목의 Tag와 배열의 인덱스를



    연개하여 코드를 좀더 쉽게 관리할 수 있습니다.



    물론 메인폼이 Create될때 배열의 내용을 다 채워 넣어야 겠죵.









    델사랑 께서 말씀하시기를...

    > procedure TForm.ListView1DblClick(Sender: TObject);

    > var

    > cTmpFrm : TFormClass;

    > fTmpFrm : TForm;

    > gsSel : String;

    > begin

    > cTmpFrm := nil;

    > fTmpFrm := nil;

    >

    >

    > gsSel = 'fAIS3040_I';

    >

    > // 현재 이부분을 String으로 설정된 값을 넣었으면하는데 방법이 없는지요

    > (***********************************************)

    > cTmpFrm := TfAIS3040_I;

    > fTmpFrm := fAIS3040_I;

    > (***********************************************)

    > 이부분을 이렇게 변경하고 싶은데 할 수 있는 방법이 없는지 잘 아시는 고수분께서 한수 가르쳐 주시면 정말 고맙겠습니다. 정말 미치겠어요.

    >

    > (***********************************************)

    > cTmpFrm := 'T' + gsSel;

    > fTmpFrm := gsSel;

    > (***********************************************)

    >

    >

    > prcCreateForm( cTmpFrm, fTmpFrm, gsSel);

    > end;

    >

    >

    > procedure TForm.prcCreateForm( gClass: TFormClass; gForm: TForm; S : String);

    > var

    > i : integer ;

    > begin

    > if MDIChildCount > 0 then

    > begin

    > for i := 0 to MDIChildCount-1 do

    > begin

    > if MDIChildren[i].Name = S then

    > begin

    > MDIChildren[i].BringToFront;

    > Exit;

    > end;

    > end;

    > end;

    >

    > Application.CreateForm( gClass, gForm);

    > end;

    >

    >

    >