delphi应用代码执行的过程和步骤

第1步:加载LApp应用程序的项目单元并执行LApp

program LApp;
// 1.1 加载引用单元:
 uses
   System.StartUpCopy,
   FMX.Forms,
   MasterDetail in 'MasterDetail.pas' {MasterDetailForm};// 1.2 加载引用单元:
{$R *.res}
// 1.3 定义应用程序级别的变量、类或方法、函数等:
type TaClass = class  //:或:  type TaClass = TObject  //:  需在上面引用sysytem的相关单元
    private 
     { Private declarations }
     public
     { Public declarations }
     end;
var LApp2:Integer; 
procedure global1;  
implementation
 procedure global1; 
 begin  // ...
 end;   begin
// 1.4 LApp应用程序初始化前要执行的代码 ,比如: 
     ReportMemoryLeaksOnShutdown := True;  //:内存泄漏报警
     if WebRequestHandler <> nil then WebRequestHandler.WebModuleClass := WebModuleClass; //:初始化类(如果有的话)


   再如,需要的话: 
           

//  uses System.SysUtils 系统时间截格式设定 及货币格式 :
           ///TFormatSettings.create(LANG_CHINESE);
           // 设置WINDOWS系统的短日期的格式:
         {$IFDEF MSWINDOWS}
           SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, 'yyyy-MM-dd');
           //SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, 'yyyy-MM-dd');
         {$ENDIF MSWINDOWS}
           //Application.UpdateFormatSettings := False; //UpdateFormatSettings 失效
           // 设定程序本身所使用的日期时间格式: 毫秒格式符.ms
           with FormatSettings do
           begin
             ShortDateFormat := 'yyyy-mm-dd';
             LongDateFormat := 'yyyy-mm-dd';
             ShortTimeFormat := 'hh:nn:ss';
             LongTimeFormat := 'hh:nn:ss.zzz'; //长时间: 毫秒.ms
             //LongTimeFormat := 'hh:nn:ss.ms'; //长时间: 毫秒.ms
             DateSeparator := '-';
             TimeSeparator := ':';
           end;  
// 1.5 LApp应用程序初始化 
   Application.Initialize;
// 1.6 LApp应用程序产生你指定的应用主窗体  
   Application.CreateForm(TMasterDetailForm, MasterDetailForm);
 // 1.7 LApp应用程序运行并执行你指定的应用主窗体(假设窗体单名元名为main,实例名为fmxMain)
   Application.Run;
 end.

第2步:加载应用主窗体

unit main;
2.1 执行窗体的接口及引用的单元: 

interface
 uses
     System.SysUtils, System.Types, 
     System.UITypes, System.Classes, 
     System.Variants, 
     System.Math,  
     System.StrUtils  
     //...  
     ;


2.2 定义该窗体的类、变量、过程和方法:(如果有的话)

type
     TfmxMain = class(TForm)  //:定义本窗体类:必须
 private
     //...
 private
     { Private declarations }
 public
     { Public declarations }
 end;
var
    fmxMain: TfmxMain; // : 实例化该窗体类:必须

2.3 定义独立于窗体类的类、变量、过程和方法:(如果有的话),比如:

type
     //...类
 private
     { Private declarations }
 public
     { Public declarations }
 end; 
     ///<summary>汉子首字缩进字符串FIntendCN:=DupeString(#32,8);</summary>
     ///<remarks>DupeString:将字符串重复N次:uses StrUtils;</remarks>
 var FIntendCN:string;  //:...变量
var FlblName,FlblTitle:TStrings;
 procedure Init; //:...方法或函数



//  2.4的代码应当写在窗体类的任何代码的最后,但它先于窗体类的任何代码执行:

2.4 执行应用主窗体的initialization部分的代码:与窗体类无关的代码(如果有的话)

initialization
   //:初始化与窗体类无关的代码
   //:执行窗体类执行前的包括FormCreate:
   FIntendCN:=DupeString(#32,8);
   FlblName:=nil;  FlblTitle:=nil;
   Init;


  ShowMessage('第2.4步单元初始化initialization开始画:在主窗体FormCreate并因此显示出来之前');
//  2.5的代码应当写在该窗体的最后,且它滞后于窗体类的任何代码执行
2.5 执行应用主窗体的finalization部分的代码:与窗体类无关的代码(如果有的话)
finalization
  //:结束与窗体类无关的代码:

FlblName.Free;
   FlblTitle.Free;
end.  //:结束窗体的执行

2.6 执行应用主窗体的FormCreate代码:

procedure TfmxMain.FormCreate(Sender: TObject);
 begin
    FlblName:=TStringList.Create;  
     FlblTitle:=TStringList.Create;
     Memo1.Lines.Add('第2.6步窗体Form初始化FormCreate开始画');
 end;

2.7 执行应用主窗体的FormShow代码:

procedure TfmxMain.FormShow(Sender: TObject);
 begin
     Memo1.Lines.Add('第2.7步窗体FormShow开始画');
 end;


2.8 执行应用主窗体的FormPaint代码:

procedure TfmxMain.FormPaint(
   Sender: TObject; Canvas: TCanvas;
   const ARect: TRectF);
 begin 
     Memo1.Lines.Add('第2.8步才会执行窗体自身开始画');
 end;


2.9 执行应用主窗体中的组件OnPaint代码:

procedure TfmxMain.ListView1Paint(
   Sender: TObject; Canvas: TCanvas;
   const ARect: TRectF);
 begin 
     Memo1.Lines.Add('第2.9步才会开始画窗体内的组件');
 end;


 

演示一下:窗体消息的传递:

在窗体还未显示出来之前:

Delphi中执行java代码 delphi怎么用_System

 

点确定后:

Delphi中执行java代码 delphi怎么用_应用程序_02