4

フォームにフレームがあります。フレーム (追加/削除ボタン、ラベル) を変更すると、フォームに変更が表示されないか、コントロールがフレーム内のフォーム内の他の位置に表示されます。フォームからフレームを削除して再度追加する場合 -> OK。

なんで?私の記憶では、Delphi 2010 (現在の Delphi XE) では問題はありませんでした。

ありがとう。

4

1 に答える 1

15

フレームを作成し、そのインスタンスを別のフォームにドロップしました。問題は、インスタンスを削除して再ドロップするまで、元のフレームに加えられた変更がすぐに表示されないことですか?

フレームを削除する必要はありません。プロパティをマスター (元のフレーム) プロパティから取得するコントロールを右クリックして選択し、 をクリックしますRevert to inherited。奇妙なことに、[すべて選択] はフレームでは機能しません。

これが、私がフレームを避ける理由の 1 つです。フレームに「カスタマイズを許可しない」プロパティ (AllowCustom=false) があればいいのにと思います。これは、フレームがこの奇妙なプロパティの二重セットを持つことを許可しないことで、設計時の DFM 競合を防ぎます。

フレームを正規化する別の方法は、右クリックしてフォームをテキストとして表示し、フレームを次のように縮小することです。

 inline Frame61: TMyFrame61
    Left = 0
    Top = 0
    Width = 500
    Height = 500
    Align = alNone
    TabOrder = 0
    ExplicitLeft = 31
    ExplicitTop = 33
  end

現在、オーバーライドされたプロパティはまったく含まれていません。

コントロールの 1 つを別の場所にドラッグすると (誤ってでも)、フレームがドロップされた DFM で次のことが起こります。

 inline Frame61: TMyFrame6
    Left = 0
    Top = 0
    Width = 500
    Height = 500
    Align = alNone
    TabOrder = 0
    ExplicitWidth = 527
    ExplicitHeight = 337
    inherited Edit2: TEdit
      Left = 19
      Top = 77
      ExplicitLeft = 19
      ExplicitTop = 77
    end   
  end

DFM 内のこれらの余分な要素は、他のレベルで行った変更を妨げます。通常、余分なコントロールを追加したり、コントロールを削除したりすることは問題ありません (余分なコントロールは、追加されたときに自動的に表示され、削除されたコントロールは消えるはずです)、配置の問題 (コントロールのオーバーラップなど) の影響により、効果がなくなる可能性があります。変更は後ほど確認してください。

于 2011-08-04T19:14:17.120 に答える