CreateForm(FormClass: TFormClass; var Reference)사용시에
답변이 없어 다시 한번 도움을 요청합니다.
MainMenu에서 Menu를 Click하면 MenuItms.name = 'mmForm1'을 받아와서
procedure 에 'mmForm1'값만 넘겨줘서
procedure 에서는 넘겨받은 값을 Copy(mmForm1,3,5)해서 'Form1'이라는 화면을 Call 하고 싶습니다.
그런데 문제는 MenuItems.name의 Type은 String이니까 그 값을 넘겨야 하는데
CreateForm 을 사용하려면 Tpye이 맞지가 않아서 처리가 안되요.
From Name을 String으로 받아서 FormClass, TFormClass Type으로 변환할 수
없나요. 아니면 String으로도 사용가능한가요?
다른방법이라도 좀....
음...님께서 말하신 폼을 스트링으로 콜은 하는 것은 당연히 불가능 합니다..
TForm은 특정자료형이 아니고 form 객체를 생성하기 위한 클래스이기 때문이죠...
따라서 저는 이 문제를 해결하기 위해 제안을 하고자 합니다.
TFormClass의 배열을 사용하는 것이죠
예를 들어아래와 같이
const
FormCnt = 100; // 폼의 갯수
var
FormAryy : Array[0..FormCnt] of TFormClass;
Unit_Form : TForm // 공통으로 사용할 폼
그리고 배열의 내용을 채워 넣습니다.
FormAryy[0] := TForm1;
FormAryy[1] := TForm2;
FormAryy[2] := TForm3;
FormAryy[3] := TForm4;
.
.
.
그리고 메뉴의 Tag프로퍼티를 순서대로 1, 2, 3, 4.....이런 식으로
입력을 합니다.
그리고 각 메뉴클릭을 하나의 이벤트 핸들러로 묶고 아래와 같이 코딩합니다
procedure TMainForm1.Menu1Click(Sender: TObject);
begin
Unit_Form := nil;
Unit_Form := FormAryy[TComponent(Sender).Tag].Create(Application);
Unit_Form.Show;
end;
음..온라인 상에서 그쩍인거라..좀 틀릴 수도 있겠네요..
정 께서 말씀하시기를...
> CreateForm(FormClass: TFormClass; var Reference)사용시에
>
> 답변이 없어 다시 한번 도움을 요청합니다.
>
> MainMenu에서 Menu를 Click하면 MenuItms.name = 'mmForm1'을 받아와서
> procedure 에 'mmForm1'값만 넘겨줘서
> procedure 에서는 넘겨받은 값을 Copy(mmForm1,3,5)해서 'Form1'이라는 화면을 Call 하고 싶습니다.
>
> 그런데 문제는 MenuItems.name의 Type은 String이니까 그 값을 넘겨야 하는데
> CreateForm 을 사용하려면 Tpye이 맞지가 않아서 처리가 안되요.
>
> From Name을 String으로 받아서 FormClass, TFormClass Type으로 변환할 수
> 없나요. 아니면 String으로도 사용가능한가요?
>
> 다른방법이라도 좀....
>