2012-10-10 7 views
6

TFormにAlignmentを設定することができます。たとえば、1つのフォームをalTopに設定し、もう1つをalClientに設定すると、2つのフォームが画面領域全体を明らかに占めます。アプリケーションでこれを行うのは分かりやすいことですか?TFormのAlignプロパティとAnchorプロパティはどのような用途ですか?

私もアンカーがフォーム上に露出していることに気づく - (?解像度の変更MDIのアプリ?)が、私は、彼らがために有用であろうものを考えることはできません任意のアイデア?

編集: 私はvideo about this postを作成して明確にしました。

+4

'alTop 'に' Align'を設定することで、デスクトップの端にあるタスクバーを模倣することができます –

答えて

15

あなたはそのParentプロパティを設定することにより、通常の制御のようなTFormを使用することができます。

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    frmEmbed:= TForm.Create(Self); 
    frmEmbed.Parent:= Self; 
    frmEmbed.Width:= 50; 
    frmEmbed.Height:= 50; 
    frmEmbed.Align:= alRight; 
    frmEmbed.Anchors:= [akLeft, akBottom]; 
    frmEmbed.Visible:= True; 
end; 

あなたはAnchorsプロパティがどのように動作するかを確認するためにfrmEmbed.Align:= alRight;行をコメントすべきです。


以上が使用される場合にご興味のある方は:キャプションバーなしの親フォームはTFrameに代わるものです。 Delphiの初期のバージョンではフレームが利用できなかったため、親のフォームが代わりに使用されました。レガシーコードでそれらを見つけることができます。

+0

現在のコードで埋め込みフォームを使用しています。再養育形態を従来のコードに限定すべき理由はありますか?複雑なフォーム(通常は別のタブシート)をフレームではなく複数のフォームに分割する方が簡単です。それは私のロジックを分割して保持するのに役立ち、私はいずれかのフォームにあるコントロールの数を制限します。通常、親をタブシートに設定し、Align:= alClientを設定します。 –

3

フォームを別のフォームに配置することができます。ドンノはどれくらいうまくいくのだろうか。 Delphi1では、イベントをルーティングする特別なサードパーティコントロールがありました。今日は、モーダルダイアログを除いて、多かれ少なかれ動作しているようです。次のように試してみてください:

procedure TMainForm.Button1Click(...); 
begin 
    with TForm.Create(Self) do begin 
     Caption := 'Internal one'; 
     Parent := Self; 
     Visible := True; 
    end;  
end;  

この設定ではおそらくアンカーとアライメントが有効です。 これが新しい "ワンウインドウ" IDEレイアウトがどのように実装されたかのように思えます。

1

他のコンテナコンポーネント内にフォームを配置することができます。

、f.i.ドッキングのために便利ですページコントロールタブにフォームをドッキングすることができます。

これはTFrameの代わりにも役に立ちます。フレームをTFrameではなくTFormとして設計すると、フレームはデザイン時に埋め込み不可能になるため、設計時には編集/タイムエディタ。

埋め込みTFramesは、埋め込まれたフォームでプロパティやイベントを再定義できます。特に、フレームを簡単にアップグレードまたはリファクタリングできるようにする場合は、必ずしも望ましいものではありません。変更された組み込みフレームのプロパティは、PASではなくDFMになります。したがって、コンパイル時には見られず、リファクタリング/名前の変更などは簡単ではありません。

2

一つの簡単なケースは、captionlessフォームのである(例えば、大都市のスタイル-8に勝つ)あなたは、右上隅に終了ボタンを固定することができます。

しかし、サイズの変更に応じて複雑なフォームを作成するのが簡単です。 akLeftとakRightを使用すると、水平方向に空白を埋め込むことができます。 4つのアンカーをすべて使用することは、クライアントを他のパネルで囲む必要なしに、クライアントをクライアントに設定することに似ています。あなたがアンカーで何ができるかの多く

はまた、多くのパネルで行うことができますが、フォームがより複雑になるにつれて、それは時々、パネル上にパネルのいくつかのレベルを必要とする厄介になります。

もちろん、パネルとアンカーの組み合わせを使用することが最も良い答えです。

+0

あなたは多少質問を誤解しているかもしれないと思います。私は本当にTFormクラスのAnchors/Alignmentプロパティの有用性、つまりフォームをコントロールに配置するのではなく、フォームを画面上に配置するのに役立ちます。 – Alister

+0

はい - 私は誤解しました。 –

+0

あなたは答えを撤回することができます。 – Alister

関連する問題