꽃접목, 델피의 메인 창 이동.

1741 단어
델피에서 프로젝트를 만들고 창을 추가합니다. 그러면 두 개의 창이 있습니다.
Form1(Unit1.pas) 및 Form2(unit2.pas)입니다.Form1은 기본 홈 창입니다.프로젝트 파일에서Form2 생성 코드를 삭제합니다.Form2를 동적으로 만들 계획입니다.
우리 코드의 목적은 Form1을 없애고 Form2를 만들고 Form2를 주 창으로 바꾸는 것입니다.Form2가 닫히면 프로그램이 종료됩니다.
Form1에 버튼을 놓습니다.위 코드:
uses Unit2;

{    Application       FMainForm   ,     }
procedure ClearMainForm;
var
  pMainForm: Pointer;
begin
  pMainForm           := @Application.MainForm;
  Pointer(pMainForm^) := nil;
end;

{       }
procedure TForm1.btn1Click(Sender: TObject);
begin
  Form1.Hide;                            {       }
  ClearMainForm;                         {    Applicaiton      }
  Application.CreateForm(TForm2, Form2); {    Form2     }
  Form2.Show;                            {    Form2,        }
  Form1.Destroy;                         {    Form1,           ,   Form1         。   Form2       ,     Form2       }
end;

{
  Application.CreateForm(TForm2, Form2);

     Form2    

      Application.CreateForm     。

     Application.CreateForm      ,     FMainForm      nil,    nil,        ,     Form2  。

        Delphi2010 / DelphiXE

        Forms.pas

        procedure TApplication.CreateForm(InstanceClass: TComponentClass; var Reference);

  9869   FCreatingMainForm := (FMainForm = nil) and InstanceClass.InheritsFrom(TForm);    FCreatingMainForm     True  ,

  3172   TCustomForm.Create        ,          True    ,      Application.CreateForm(TForm2, Form2);      。

  9886   if (FMainForm = nil) and (Instance is TForm) then           ,   FMainForm       nil  ,        True

  9889   FMainForm := TForm(Instance);        

      TApplication.CreateForm      
}


VCL의 코드는 잘 연구할 만하다.다음 편에서는 VCL의 메커니즘을 이용하여 컨트롤 핸들을 통해 컨트롤 실례를 얻겠습니다.

좋은 웹페이지 즐겨찾기