0

Delphi 5 アプリケーションを Delphi XE7 にアップグレードしています。アプリケーションには、WindowState wsNormal で開く多数の MDIChild (FormStyle fsMDIChild) フォームがあります。これらのフォームの 1 つを開いて再度閉じると、メイン フォーム (FormStyle fsMDIForm) のメイン メニュー (TMainMenu) が右に揃えられ、元に戻ることはありません。MDIChild フォームを閉じる前にサイズを変更しても (たとえば、[標準] または [最小化] アイコンをクリック)、これは起こりません。

これは Delphi 5 バージョンでは発生しないため、XE 7 では別の処理が行われると思われます。

他の誰かがこれを以前に経験しましたか?もしそうなら、どのように修正しましたか?

アップデート:

私はこの問題をうまく再現しました:

  1. 新しい VCL アプリを作成する
  2. メイン フォーム (MainForm) を作成する formStyle MDIForm
  3. メニュー項目を含む MainForm の MainMenu を作成する
  4. 2 番目のフォーム (ChildForm) を作成する
  5. ChildForm を formStyle MDIChild にする
  6. メニュー項目で ChildForm の MainMenu を作成する
  7. 重要 (これが問題です): ChildForm BorderIcons のみを選択します biSystemMenu および biMaximise
  8. ChildForm を作成して表示する MainForm の作成ボタン
  9. アプリケーションを実行
  10. ボタンをクリック
  11. チャイルドフォームを最大化
  12. ChildForm を閉じる (最大化しないと誤動作しません)
  13. MainForm のメニューが右揃えになり、左側にクリックできない「Minimise」アイコンが表示されることを確認します。biMinimise が ChildForm の BorderIcons に追加されている場合、問題は解消されます。

これはバグだと確信しています。私が間違っている場合は修正してください。

ありがとうJ

4

1 に答える 1

1

報告された動作は、まったく新しいプロジェクトを作成し、説明した方法でフォームを作成するときに観察されません。

明らかに、この問題を引き起こしているコードがプロジェクトに含まれています。この問題コードを特定するには、デバッグを行う必要があります。問題がなくなるまでコードを削除することから始めます。最後に取り除いたコードには、問題の原因を突き止める手がかりが含まれているはずです。問題が切り分けられるまで、この方法を続けます。

于 2015-04-01T15:18:36.057 に答える