フォームにフレームがあります。フレーム (追加/削除ボタン、ラベル) を変更すると、フォームに変更が表示されないか、コントロールがフレーム内のフォーム内の他の位置に表示されます。フォームからフレームを削除して再度追加する場合 -> OK。
なんで?私の記憶では、Delphi 2010 (現在の Delphi XE) では問題はありませんでした。
ありがとう。
フレームを作成し、そのインスタンスを別のフォームにドロップしました。問題は、インスタンスを削除して再ドロップするまで、元のフレームに加えられた変更がすぐに表示されないことですか?
フレームを削除する必要はありません。プロパティをマスター (元のフレーム) プロパティから取得するコントロールを右クリックして選択し、 をクリックします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 内のこれらの余分な要素は、他のレベルで行った変更を妨げます。通常、余分なコントロールを追加したり、コントロールを削除したりすることは問題ありません (余分なコントロールは、追加されたときに自動的に表示され、削除されたコントロールは消えるはずです)、配置の問題 (コントロールのオーバーラップなど) の影響により、効果がなくなる可能性があります。変更は後ほど確認してください。