¿Cómo hago una tecla de acceso directo hacer diferentes cosas dependiendo de la página de la pestaña activa?

StackOverflow https://stackoverflow.com/questions/6360039

Pregunta

Cada TTabSheet en mi TPageControl tiene un TToolBar en eso. Cada barra de herramientas tiene una TToolButton Eso debería responder al mismo atajo de teclado. ¿Cómo proporciono las teclas de acceso rápido para que se invoque el botón correcto para la página actual?

En la primera hoja de pestañas, Control+T debería hacer que algo suceda, pero al cambiar a la segunda pestaña, Control+T debería hacer que algo más suceda en su lugar.

¿Es este un momento para alternar? TActionList.State Entre asNormal y asSuspended ¿Cuándo se muestran o ocultas las hojas de pestaña?

¿Fue útil?

Solución

Si tu quieres Control+T simplemente para voltear entre activo TabSheets en un PageControl, luego crea un solo Acción, con un Control+T atajo y voltear entre páginas según sea necesario:

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;

Otros consejos

Si desea una tacción para hacer diferentes cosas dependiendo de qué control lo iniciara, solo mire la acción ActionComponent propiedad. Enganche todos los controles a la misma acción.

Una alternativa sería tener múltiples acciones con el mismo acceso directo y habilitarlas o deshabilitarlas en el evento de actualización en función de lo que es visible o enfocado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top