1

を使用した Delphi アプリケーションがPageControlありTabSheetsます。また、実行時に new を作成TabSheetsし、事前定義されたフレームのインスタンスを設定します。これらのフレームはうまく機能しますが、TabSheet. を使用しようとしましFrame.Align := alClientたが、うまくいきませんでした。関連するコードは次のとおりです。

CreateNewPage(3);
NewLimitedChoiceFrame := TLimitedChoiceFrame.Create(NewInputPage);
NewLimitedChoiceFrame.Parent := NewInputPage;

CreateNewPageの新しいインスタンスを作成し、TabSheetそのPageControl所有者と親を作成します。結果はグローバル変数に代入されますNewInputPage

4

1 に答える 1

3

コントロールをその親の中央に配置するには、次のようにします。

procedure CentreControl(Control: TControl);
begin
  Control.Left := (Control.Parent.ClientWidth-Control.Width) div 2;
  Control.Top := (Control.Parent.ClientHeight-Control.Height) div 2;
end;

フレームを渡して、この関数を呼び出します。明らかに、そうする前に、親を割り当てるまで待つ必要があります。

実行時にページコントロールのサイズを変更できる場合は、タブシートのOnResizeイベントからこの関数の呼び出しを追加します。または、NGLNが指摘しているようAnchorsに、コントロールをに設定するだけ[]で、VCLフレームワークは、親のサイズが変更されたときにコントロールの中央に配置されなくなります。

于 2012-09-27T01:24:54.640 に答える