Q&A

  • 내가 만든 어플의 폼명 알기...
제가 만든 프로그램에 폼이 수십개 있습니다.
프로그램이 실행되고 메인폼이 보이고 그중 어떤 조회 폼에서
버튼을 누른다거나 어떤 이벤트에서 수십개의 폼명과  폼캡션을 알 수 있는 방법이
있을까요?
스트링그리드에 보여준다거나  콤보박스에 보여준다거나

폼명    폼캡션
-----------------
Form1   입력관리
Form2   조회관리
Form3   코드관리
....    ....
....    ....

이렇게 말이죠  방법이 있을까요?
3  COMMENTS
  • Profile
    김기원 2003.10.10 06:34

    만약 MDI 폼을 사용하신다면 아래와 같은 방법은 있습니다..

    var
        i : Integer;
    begin

        for i := 0 to MDIChildCount - 1 do
            if MDIChildren[i] is TFA10100 then
            begin
                Memo1.LInes.Add(MDIChildren[i].Name);
                Memo1.LInes.Add(MDIChildren[i].Caption);
                Exit;
            end;
    end;
  • Profile
    아폴론 2003.10.10 08:36


    또 다른분의 답변 입니다.

    정찬희 wrote:
    위 방법은 폼을 Auto CreateForm 으로 둔경우에만 보여집니다.
    한편으론 생성도 되지 않은 수십개의 폼명과 캡션을 어찌 알까?  합니다만...
    무신 방법이 없을까요?
  • Profile
    최용일 2003.10.10 09:35
    안녕하세요. 최용일입니다.

    생성되지 않은 폼명을 알 수 있는 방법은 없습니다. 미리 배열같은 곳에 저장해두지 않은한...

    편법이라고 하긴 뭐하지만... 아래와 같은 식으로 폼명을 관리하는 유닛을 하나 따로 만들어서 사용하시면 쉽게 될거 같네요... uses절에 유닛추가하구 initialization섹션에 폼명등록만 하시면 되니까...

    여기에 폼의 캡션도 관리하도록 수정하시면 되겠죠...

    // 폼명을 관리하는 유닛
    unit RegForms;

    interface

    uses
        Classes;

    var
        FormNameList: TStringList; // 폼명을 저장하는 전역객체
        // 폼명을 알고 싶으면 이 객체를 루프 돌리면 되겠죠...

    procedure RegisterFormName(const FormName: string);

    implementation

    procedure RegisterFormName(const FormName: string);
    // 폼명 등록하는 함수
    begin
        // 유일성  체크해서 폼명 저장
        // if문은 별 필요없을거 같긴한데... 혹시나...
        if FormNameList.IndexOf(FormName) <> -1 then
            FormNameList.Add(FormName);
    end;

    initialization
        // 유닛 초기화시에 객체 생성
        FormNameList := TStringList.Create;

    finallizatioin
        // 유닛 소멸시에 객체 해제
        FormNameList.Free;

    end.

    // 폼유닛
    unit Unit1;

    interface

    uses
        ..., RegForms;

    type
        TForm1 = class(...);
            ......
        end;

    implementation

    ......

    initialization
        // 폼유닛 초기화시에 폼명 저장
        RegisterFormName(TForm1.ClassName);

    end.    

    ^^ 항상 즐코하세요...