2015年05月30日

Frameの Create, Destroy イベント2

Formにconstructor/destructorを追加して確認

----------------------------------------------------------------------------------------------
constructor TFormUnit.Create(AOwner: TComponent);
begin
  OutputDebugString(PChar('○TFormUnit.Create Before inherited○'));
  inherited;
  OutputDebugString(PChar('○TFormUnit.Create After inherited○'));
end;

destructor TFormUnit.Destroy;
begin
  OutputDebugString(PChar('○TFormUnit.Destroy○'));
  inherited;
end;
----------------------------------------------------------------------------------------------

結果
----------------------------------------------------------------------------------------------
デバッグ出力: ◎initialization◎ プロセス Project1.exe (3000)
デバッグ出力: ○initialization○ プロセス Project1.exe (3000)
デバッグ出力: ○TFormUnit.Create Before inherited○ プロセス Project1.exe (3000)
デバッグ出力: ◎TFrameUnit.Create◎ プロセス Project1.exe (3000)
デバッグ出力: ○TFormUnit.Create After inherited○ プロセス Project1.exe (3000)
デバッグ出力: ○TFormUnit.FormCreate○ プロセス Project1.exe (3000)
----------------------------------------------------------------------------------------------
これは、 Formのプロパティ OldCreateOrder = False (Default) の場合
これを、OldCreateOrder = True にすると
----------------------------------------------------------------------------------------------
デバッグ出力: ◎initialization◎ プロセス Project1.exe (2836)
デバッグ出力: ○initialization○ プロセス Project1.exe (2836)
デバッグ出力: ○TFormUnit.Create Before inherited○ プロセス Project1.exe (2836)
デバッグ出力: ◎TFrameUnit.Create◎ プロセス Project1.exe (2836)
デバッグ出力: ○TFormUnit.FormCreate○ プロセス Project1.exe (2836)
デバッグ出力: ○TFormUnit.Create After inherited○ プロセス Project1.exe (2836)
----------------------------------------------------------------------------------------------
FormCreateのタイミングが変わる。

posted by しんくそふと at 09:47| Comment(0) | TrackBack(0) | おぼえ

2015年05月29日

Frameの Create, Destroy イベント


Frame には、OnCreate/OnDestroyイベントがないが下記のように、constructor/Destroyを定義すれば、同じようなイベントはかける。

-------------------------------------------------------------------------------------
type
  TFrameUnit = class(TFrame)
  private
    { Private declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;
-------------------------------------------------------------------------------------
ただし、発生タイミングに注意が必要。
Frameのimplementationを下記のように定義。
-------------------------------------------------------------------------------------
constructor TFrameUnit.Create(AOwner: TComponent);
begin
  inherited;
  OutputDebugString(PChar('◎TFrameUnit.Create◎'));
end;
destructor TFrameUnit.Destroy;
begin
  OutputDebugString(PChar('◎TFrameUnit.Destroy◎'));
  inherited;
end;
initialization
  OutputDebugString(PChar('◎initialization◎'));
finalization
  OutputDebugString(PChar('◎finalization◎'));
end.
-------------------------------------------------------------------------------------
Formにも下記のように定義して確認
-------------------------------------------------------------------------------------
procedure TFormUnit.FormCreate(Sender: TObject);
begin
  OutputDebugString(PChar('○TFormUnit.FormCreate○'));
end;
procedure TFormUnit.FormDestroy(Sender: TObject);
begin
  OutputDebugString(PChar('○TFormUnit.FormDestroy○'));
end;
initialization
  OutputDebugString(PChar('○initialization○'));
finalization
  OutputDebugString(PChar('○finalization○'));
end.
-------------------------------------------------------------------------------------

デバッグ出力: ◎initialization◎ プロセス Project1.exe (3656)
デバッグ出力: ○initialization○ プロセス Project1.exe (3656)
デバッグ出力: ◎TFrameUnit.Create◎ プロセス Project1.exe (3656)
デバッグ出力: ○TFormUnit.FormCreate○ プロセス Project1.exe (3656)

デバッグ出力: ○TFormUnit.FormDestroy○ プロセス Project1.exe (3656)
デバッグ出力: ◎TFrameUnit.Destroy◎ プロセス Project1.exe (3656)
デバッグ出力: ○finalization○ プロセス Project1.exe (3656)
デバッグ出力: ◎finalization◎ プロセス Project1.exe (3656)
となる。

posted by しんくそふと at 16:16| Comment(0) | TrackBack(0) | おぼえ

2015年05月01日

ローカライズ時注意 その2

Delphi2007 ForeDAC TADMemtable(最近のDelphiでは、TFDMemTableに改名) の使用での注意点。

Windows7 英語版 で動かす場合、フィールド名に、2バイト文字を使うとエラーとなる。


Delphi2009以降のUniCode対応版ではもしかしたら大丈夫なのか。未確認。

posted by しんくそふと at 15:03| Comment(0) | TrackBack(0) | おぼえ