測試環境:Windows 10 Enterprise Insider Preview Build 10130

受測 Delphi 版本:Delphi4、Delphi5、Delphi XE3、Delphi XE6、Delphi XE7、Delphi XE8

上述 Delphi 版本均有編譯出 EXE,確認均有此一問題存在,可以合理推測所有 Delphi 版本均同

狀況描述

    (1)兩個 form,各放一個 edit

    (2)程式執行後在 form1 的 edit 先將輸入法切換為注音

    (2)在 form1 的 edit 按下 F3 後開啟 form2

    (3)在 form2 切換輸入法為倉頡或是速成

    ->form2 會被壓到 form1 後面,無法繼續操作





完整測試程式碼在下述超連結,以 Delphi5 撰寫(可以在 D4~XE8 正常編譯無誤)

http://1drv.ms/1Ih5sHK

 

對此一問題有任何心得歡迎大家交流、分享

 

更新後續資訊

正確說法應該是 Delphi4~Delphi 2006 編譯出來的程式都有問題,但 Delphi 2007 後的專案新增了一個屬性 Application.MainFormOnTaskbar




所以用 Delphi 2007 以後編譯出來的專案都不會有問題嚕,至於之前小弟編譯出來的為什會有問題呢?因為小弟是直接把 D5 的 source code 拿去 XE 版本編譯,Delphi 在轉換專案時,並不會主動加入 Application.MainFormOnTaskbar := True; 這句....so

原廠對於這部分的說明

http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Forms_TApplication_MainFormOnTaskBar.html

 

 


迷之音....那我們這些 D4~D7 的死忠愛好者怎麼辦?

文章標籤
創作者介紹

縹緲's blog

縹緲 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • 貓老大
  • D4 到 D7 也很簡單啊,把支援 MainFormOnTaskBar 版本的 TApplication.SetMainFormOnTaskBar 裡面的程式碼抄出來,修改一下讓 D4 到 D7 能用不就行了?
  • 這個想法我已經做過了...只能解決一半,畢竟這個問題沒那麼單純,這個解法,若在第二個 form 上有兩個 edit,把 focus 由第一個 edit 換到第二個時,form 2 還是會被壓到 form 1 後面。畢竟 Forms.pas 內跟 MainFormOnTaskBar 有關的程式碼不少,也不只一處,涵蓋從 TApplication 跟 TCustomForm..其他想過的方式還有
    (1)直接改 Forms.pas...然後放到各專案目錄
    (2)繼承 TAppication 來改
    (3)用 D2007 以上版本寫個 EXE,把舊的程式改用 DLL 方式載入(包含傳入 TApplication Handle)
    上述方式均失敗(無效或不能這樣做)

    縹緲 於 2015/07/23 11:11 回覆

  • neo.sryang
  • 如果設定應用程式相容性呢?
    例如設定成 Win 7 甚至是 XP
  • 8/3 的時候,有聯繫在台灣微軟的人,ms ime team 初步回覆是已知 bug,也許1~2週會修正
    所以確認是輸入法的問題,把程式設定成相容模式應該也是沒有用的

    縹緲 於 2015/08/10 11:34 回覆

找更多相關文章與討論