2

この問題の解決策が見つからないようです。ここにいる誰かが私を指示または支援してくれることを願っています。私のアプリケーションと同じように失敗する、私が行ったダミーのテストプログラムから説明しようとします。

すべてのアンカーがチェックされているフレームがあります (左、上、右、下)。クライアントに合わせたフレームに 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
4

1 に答える 1

2

パネルの位置合わせに使用した手法を変更することで、問題を解決できました。パネルをタブ シートの中央に配置し、パネルの左、上、右、および下のアンカーを設定する代わりに、alClient を整列するようにパネルを設定し、AlignWithMargins プロパティを true に設定し、適切なマージンを設定します。左、上、右、および下で、目的の効果を実現します。正しい方向に向けてくれた@Sertacに感謝します。

于 2013-10-16T18:37:46.510 に答える