如何使快捷键根据活动标签页执行不同的操作?

时间:2011-06-15 15:15:05

标签: delphi button toolbar hotkeys ttabsheet

TTabSheet上的每个TPageControl都有一个TToolBar。每个工具栏都有一个TToolButton,它应该响应相同的键盘快捷键。如何提供热键以便为当前页面调用右键?

在第一个标签页上, Ctrl + T 应该会发生一些事情,但在切换到第二个标签时, Ctrl + T 应该让其他事情发生。

当显示或隐藏标签页时,是时候在TActionList.StateasNormal之间切换asSuspended吗?

2 个答案:

答案 0 :(得分:1)

如果您想要 Ctrl + T ,只需在TabSheets上的有效PageControl之间切换,然后创建一个操作< / strong>,使用 Ctrl + T 快捷方式,并根据需要在页面之间翻转:

procedure TForm1.actNextPageExecute(Sender: TObject)
var
   nextPageIndex: Integer;
begin
   nextPageIndex := PageControl1.ActivePageIndex+1;

   if (nextPageIndex > PageControl1.Pages.Count-1) then
       nextPageIndex := 0;

   PageControl1.ActivePageIndex := nextPageIndex;
end;

答案 1 :(得分:0)

如果您希望一个TAction根据启动它的控件执行不同的操作,请查看操作的ActionComponent属性。将所有控件挂钩到同一个操作。

另一种方法是使用相同的快捷方式进行多个操作,并根据可见或聚焦的内容在Update事件中启用或禁用它们。