この問題の解決策が見つからないようです。ここにいる誰かが私を指示または支援してくれることを願っています。私のアプリケーションと同じように失敗する、私が行ったダミーのテストプログラムから説明しようとします。
すべてのアンカーがチェックされているフレームがあります (左、上、右、下)。クライアントに合わせたフレームに TPageControl があります。単一のパネルを含むページ コントロールで定義されたタブシートがあります。端の周りの余白を除いて、タブシートの大部分を覆うのに十分な大きさのパネルを作成しました。問題を見やすくするために、パネルの色を黄色に変更しました。パネルを中央に配置し、パネルのすべてのアンカーもチェックしました。
次に、フォームを作成し、色を緑に設定しました。フォームにフレームをドロップすると、色の違いにより、フォームの緑色の背景、タブ シート (私の場合は基本的に白)、タブ シートの黄色のパネルが見やすくなりました。すべてが期待どおりに見えます。
ここでテストアプリを実行すると、実行時にタブシートの黄色のパネルがタブシートに対して幅が広すぎて、パネルのキャプションが期待どおりに中央に配置されていないことを除いて、すべてがうまく見えます(中央に配置されていると確信していますが、パネルが大きすぎますタブシートの幅が広い)。フォームのサイズを変更すると、すべてが期待どおりに移動します (パネルはフォーム上のタブ シートとタブ シートの位置を保持します) が、右側が切り取られているため、パネルの内容全体を表示することはできません (例には何も入れていませんが、アプリケーションには間違いありません)。
最近、アプリケーションを Delphi 7 から Delphi XE2 に変換しましたが、ほんの一握りのフレームしかありません。タブシートを含むものを除いて、すべて正常に動作します (D7 と同じ)。
XE2 にバグがありますか、それとも何か問題がありますか?
フレームをフォームにドロップして適切なサイズにすると、フレームの幅と高さが拡張されるようにしたいと考えています。フレームに含まれるタブシートの内容についても同様です。しかし、それはもう機能しません。
これは既知の問題ですか、それとも回避策はありますか?
これが役立つかどうかはわかりませんが、より理にかなっている場合、これはフレームの DFM です。
object Frame3: TFrame3
Left = 0
Top = 0
Width = 200
Height = 100
Anchors = [akLeft, akTop, akRight, akBottom]
TabOrder = 0
object pgc1: TPageControl
Left = 0
Top = 0
Width = 200
Height = 100
ActivePage = ts1
Align = alClient
TabOrder = 0
object ts1: TTabSheet
Caption = 'TPageControl'
DesignSize = (
192
72)
object pnl1: TPanel
Left = 3
Top = 10
Width = 180
Height = 51
Anchors = [akLeft, akTop, akRight, akBottom]
Caption = 'pnl1'
Color = clYellow
ParentBackground = False
TabOrder = 0
end
end
end