Delphi 5 アプリケーションを Delphi XE7 にアップグレードしています。アプリケーションには、WindowState wsNormal で開く多数の MDIChild (FormStyle fsMDIChild) フォームがあります。これらのフォームの 1 つを開いて再度閉じると、メイン フォーム (FormStyle fsMDIForm) のメイン メニュー (TMainMenu) が右に揃えられ、元に戻ることはありません。MDIChild フォームを閉じる前にサイズを変更しても (たとえば、[標準] または [最小化] アイコンをクリック)、これは起こりません。
これは Delphi 5 バージョンでは発生しないため、XE 7 では別の処理が行われると思われます。
他の誰かがこれを以前に経験しましたか?もしそうなら、どのように修正しましたか?
アップデート:
私はこの問題をうまく再現しました:
- 新しい VCL アプリを作成する
- メイン フォーム (MainForm) を作成する formStyle MDIForm
- メニュー項目を含む MainForm の MainMenu を作成する
- 2 番目のフォーム (ChildForm) を作成する
- ChildForm を formStyle MDIChild にする
- メニュー項目で ChildForm の MainMenu を作成する
- 重要 (これが問題です): ChildForm BorderIcons のみを選択します biSystemMenu および biMaximise
- ChildForm を作成して表示する MainForm の作成ボタン
- アプリケーションを実行
- ボタンをクリック
- チャイルドフォームを最大化
- ChildForm を閉じる (最大化しないと誤動作しません)
- MainForm のメニューが右揃えになり、左側にクリックできない「Minimise」アイコンが表示されることを確認します。biMinimise が ChildForm の BorderIcons に追加されている場合、問題は解消されます。
これはバグだと確信しています。私が間違っている場合は修正してください。
ありがとうJ