Wolfgang Chien's Homepage | Delphi學習筆記 - 問答篇 |
(之前確認問題的討論, 略)
問題原來是這樣的, 假設選單看起來像這樣,
--------------- File Edit --------------- New | Open | Exit | --------+
![]() |
1. 一般的 Form 或 MDI 主視窗中的, File, Edit, New... 等 MenuItem, 設定其 Visible 或 Enabled 屬性都很乖, |
![]() |
2. MDIChild, New, Open, Exit 這些第二層的功能表, 設定其 Visible 或 Enabled 屬性也很乖. |
![]() |
3. 但是 File, Edit 這些最上層功能表如果是原來在 DesignTime 時建在子視窗中的, 那麼, 設定其Visible 或 Enabled 屬性則一點作用也沒有, 雖然 屬性值確定已更動了, 視覺與實質上都沒有作用. |
簡單的說, MDI子視窗中的最上層功能表之 Enabled 與 Visible 屬性看來沒有作用, 暫時也還沒有去 trace VCL 原始程式, 原因不明.
目前我的作法是直接 Call WinAPI 來處理, 程式範例如下所列, 同時, 整個實驗專案歡迎下載: mdimenu2.zip(檔案大小: 3603 bytes)
procedure TForm2.mnuTestEnableClick(Sender: TObject); begin mnuTestEnable.Checked := not mnuTestEnable.Checked; // Hm.... :\ mnuEdit.Enabled := mnuTestEnable.Checked; ==> no reponse if mnuTestEnable.Checked then EnableMenuItem(Form1.mnuMain.Handle, mnuEdit.Command, MF_BYCOMMAND or MF_ENABLED) else EnableMenuItem(Form1.mnuMain.Handle, mnuEdit.Command, MF_BYCOMMAND or MF_GRAYED); DrawMenuBar(Form1.Handle); end;
首頁 | 學習筆記 | 主題公園 | 軟體下載 | 關於本站 | 討論信群 | 相約下次 |