0

私は、(600 * 400)、つまり幅= 600、高さ= 400のデルフィ形式の寸法を持っています。同じサイズで、互いに等距離の寸法(150 * 300)のパネルを3つ保持しました。

ここで、フォームのサイズを変更する(手動で、またはボタンを最大化して)サイズを変更するときに、パネルがフォームに合わせてサイズを変更する必要があります。

これにはanchorsプロパティを使用しています。しかし、それは期待どおりに機能していません。パネルが重なり合っています。この機能を実現するために、どのアンカープロパティをtrueに設定するか、どのアンカープロパティをfalseに設定するかがわかりません。これで私を助けてください。

4

2 に答える 2

2

私はこれを別の方法で攻撃する傾向がありました(正しいか間違っているか)。ここでは、「整列」プロパティを使用して、パネルをフォームの片側または別の側に「整列」させます。次に、サイズ変更時に使用可能なスペースの大部分を占めるように、「クライアント」に配置されたマスターパネルを選択することがよくあります(つまり、1つのパネルを左に配置し、別のパネルを上に配置し、3番目をクライアントに配置します。パネル内にパネルを配置できます。これでスプリッターコンポーネントを使用して、ユーザーが必要に応じてサイズを変更できるようにします。これは、目的の結果ではない場合がありますが、オーバーラップの問題を確実に回避します。

おそらく、物事を拡大縮小したいので、すべてのパネルが同じアスペクト比を維持しますか?XE2にタグを付けた場合、これがFireMonkeyフォームの場合、フォームのスケーリングはオプションになると思います(ここを参照:http://edn.embarcadero.com/article/42560

于 2012-11-28T06:56:52.480 に答える
2

手動で配置およびサイズ変更する必要があります。パネルの所有者のOnReSize-Methodを使用できます。

procedure TOwnerForm.OnResize(Sender : TObject);
begin
  panel1.width := Self.Width div 3;
  panel2.width := Self.width - 2*panel1.Width;
  panel3.width := Self.Width - panel1.Width - panel2.Width;
  panel1.Left := 0;
  panel2.Left := panel1.left + panel1.width;
  panel3.left := panel2.left + panel2.width;
  panel1.top := 0;
  panel2.top := panel1.top;
  panel3.top := panel1.top;
end;
于 2012-11-28T06:58:42.663 に答える