Как сделать так, чтобы сочетание клавиш делало разные вещи в зависимости от активной вкладки? - PullRequest
3 голосов
/ 15 июня 2011

Каждый TTabSheet на моем TPageControl имеет TToolBar на нем.Каждая панель инструментов имеет TToolButton, который должен реагировать на одно и то же сочетание клавиш.Как мне предоставить горячие клавиши, чтобы правая кнопка вызывалась для текущей страницы?

На первой вкладке листа Ctrl + T должно что-то произойти, нопри переключении на вторую вкладку Ctrl + T должен вместо этого сделать что-то еще.

Это время для переключения TActionList.State между asNormal и asSuspended когда вкладки показаны или скрыты?

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Если вы хотите, чтобы Ctrl + T просто переключался между активными TabSheets на PageControl, затем создайте одно Действие с 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;
0 голосов
/ 17 июня 2011

Если вы хотите, чтобы одно TAction выполняло разные действия в зависимости от того, какой элемент управления его инициировал, просто посмотрите на свойство ActionComponent действия. Подключите все элементы управления к тому же действию.

Альтернативой может быть несколько действий с одним и тем же ярлыком, а также включение или отключение их в событии «Обновление» в зависимости от того, что является видимым или сфокусированным.

...