ほとんどのVCLのプロパティにあるAlignには、alClientなどのほかにalCustomというものが指定できますが、あれはどういうものなのか?ヘルプによると、親コントロールのCustomAlignPosition呼び出しによって動作が決まるとか(もう一つのは試してない)。
で、そのCustomAlignPositionですが、"呼び出し"と言ってるだけあってイベントなんかじゃありません。プロテクトメソッドです。故に、TPanelの中においたコントロールなんかでは、alCustomを指定することには何の意味もありません。フォームの直下においたりしたコントロールにだけ、効果があります。
で、どう使うかというと、コントロールの数だけCustomAlignPositionというメソッドが呼ばれてくるので、それに従ってポジションを決めろと言うことです。たとえば下記のように
procedure TTWatchDisplayForm.CustomAlignPosition(Control: TControl; var NewLeft, NewTop, NewWidth, NewHeight: Integer; var AlignRect: TRect; AlignInfo: TAlignInfo); const FRAME_SIZE = 2; begin inherited; NewLeft := FRAME_SIZE; NewTop := FRAME_SIZE; NewHeight := ClientHeight - FRAME_SIZE * 2; NewWidth := ClientWidth - FRAME_SIZE * 2; end;
C#なんかで言う、DockPaddingなどと同じようなことができます。
まあ、この程度だとあっちはIDE上で同じことができる分、あっちの方に部がありますが、OnResizeイベント内で、一個ずつコントロールを配置するなどに比べると、コードはすっきりするかも知れません。
しかし、よほどのことがない限り、Anchorを使った方が早いとは思いますが。