2010-05-05 62 views
3

我在頁面控件的選項卡中打開窗體。這些表單可能包含快捷方式的操作。我希望這些快捷方式僅在包含此表單的選項卡處於活動狀態時纔會觸發。如何防止窗體不活動時觸發快捷方式

我試圖覆蓋窗體的IsShortCut,但它沒有被調用。 Form的OnShortCut也不會被調用。

我想避免將代碼放在每個操作上來檢查它。

我使用德爾福2010年

+0

當你說你有一個頁面控件的「窗體」,我想你有TPageControl中的TTabSheets? – 2010-05-05 16:08:05

+0

好吧,也許我們畢竟不是在談論同樣的事情,因爲TForm的OnShortCut確實被調用,如果有人這樣做,我相信你正在這樣做... – 2010-05-05 16:14:36

+0

每個tabsheet是一個窗體的父窗體。 – 2010-05-05 16:19:54

回答

3

將隱藏標籤上的動作列表的State設置爲asSuspended。只有可見標籤上的動作列表應具有asNormal的狀態。這將阻止快捷鍵工作。它還可以防止更新這些操作,這對您的應用程序來說可能會或可能不會有好處。

0

嘗試設置窗體的當您切換到它的Tab鍵來切換掉虛假煥,和真實的。這應該禁用表單上的所有內容,包括快捷方式。

+0

我不確定這是否可行,因爲如果TTabSheet上的TButton由TAction控制,那麼禁用TTabSheet(因此禁用TButton)將不會自動禁用TAction。 – 2010-05-05 16:11:18

+0

我假設,從描述中,他的父母實際TForm後裔到標籤頁上。如果不是,那麼我的答案可能是無效的。 – 2010-05-05 16:19:15

+0

你是對的! :) – 2010-05-05 16:36:04

0

將所有快捷方式放入操作中,並將這些操作放入每個表單的一個操作列表中。然後,您可以禁用當前未激活的表單的操作列表。 (我不記得確切的TActionList屬性設置或方法來調用或激活/停用它,但它在那裏。)