2009-12-07 37 views
3

我試圖在計時器運行此:最小化德爾福申請使用實時彈出菜單

Application.Minimize; 
ShowWindow(Application.handle, SW_HIDE); 

它已經在代碼永遠和我們剛剛發現,當你有一個積極的彈出菜單不工作它不會最小化MDI父窗口。

我想,如果我可以在運行此代碼之前關閉彈出式菜單,那麼我會好的。問題是,這段代碼在MDI Parent中,我不知道當前彈出菜單的位置。無論它是否是另一個窗體的工具欄的一部分,它都會形成工具欄,右鍵單擊或空格鍵旁邊看起來毫無意義的按鍵。

那麼,有沒有辦法在我的整個程序中隱藏活動彈出菜單?另外,如果有更好的代碼塊比我用來減少這個問題以避免這個問題,那也是非常棒的信息。

+0

我創建了一個帶有彈出菜單的簡單項目,並將窗體的彈出菜單設置爲指向該彈出菜單。我運行我的應用程序,右鍵單擊表單以激活彈出式菜單,但當計時器激發您的代碼時,應用程序仍然會最小化。你確定你沒有「showModal」嗎? – 2009-12-07 21:45:40

+0

是的,我有一個演出模式。當應用程序最小化時,彈出另一個表單,這是程序的登錄表單。除非在某個地方有一個彈出式菜單,否則一切都可以正常工作。 – 2009-12-07 22:11:48

回答

7

要關閉彈出菜單,你可以使用

if GetCapture <> 0 then 
    SendMessage(GetCapture, WM_CANCELMODE, 0, 0); 

在你的代碼中儘量減少表單之前。

+0

真棒!我不會在一百萬年中猜出這一點。 – 2009-12-07 22:13:41

+0

很酷! GetCapture API非常棒! – 2009-12-08 05:34:04