2015-04-01 161 views
0

我們正在將Delphi 5應用程序升級到Delphi XE7。該應用程序具有許多使用WindowState wsNormal打開的MDIChild(FormStyle fsMDIChild)窗體。當我打開其中一個窗體並再次關閉它時,主窗體(FormStyle fsMDIForm)上的主菜單(TMainMenu)將自己對齊到右側,並且永遠不會再返回。如果我在關閉它之前調整MDIChild窗體大小(例如,單擊「正常」或「最小化」圖標),則不會發生這種情況。德爾福MDI兒童表格和MainMenu

這並不與德爾福5.0版本發生,所以我承擔的東西被用不同XE 7

任何其他以前經歷過這樣處理?如果是這樣,你是如何解決它的?

UPDATE:

我已經成功地複製這個問題:

  1. 創建一個新的VCL應用
  2. 使主窗體(MainForm的)formStyle的MDIForm
  3. 爲MainForm中有菜單項
  4. 創建的MainMenu
  5. 創建第二個表單(ChildForm)
  6. Make ChildForm formStyle MDIChild
  7. 爲ChildForm與菜單項創建的MainMenu
  8. 重要(這是打破它):選擇ChildForm BorderIcons僅biSystemMenu和biMaximise
  9. 創建於MainForm的按鈕,創建和顯示ChildForm
  10. 運行應用程序
  11. 點擊按鈕
  12. 最大化ChildForm
  13. 關閉ChildForm(已被最大化,否則故障不會發生)
  14. OBSE現在MainForm的菜單現在與右邊的一個不可點擊的「Minimize」圖標對齊如果biMinimise被添加到ChildForm的BorderIcons中,問題就會消失。

我很確定這是一個錯誤。如我錯了請糾正我。

感謝 Ĵ

回答

1

你報告創建一個全新的項目時,並創造你描述的方式形式沒有觀察到的行爲。

很明顯,在你的項目中有一些代碼導致了這個問題。您需要進行一些調試以識別此問題代碼。開始剝離代碼,直到問題消失。你剝去的最後一個代碼應該包含引導你解決問題原因的線索。繼續這種方式,直到你解決了問題。

+0

謝謝大衛,我會試驗一下。在Delphi 5中,我發現這種行爲是不同的,但是你的解釋很有道理。 – oxydog 2015-04-08 09:06:45