Come faccio a fare un tasto di scelta rapida fare cose diverse a seconda della pagina della scheda attiva?
Domanda
A testa TTabSheet
sul mio TPageControl
ha un TToolBar
su di esso. Ogni barra degli strumenti ha un file TToolButton
Ciò dovrebbe rispondere allo stesso collegamento della tastiera. Come si fornisce i tasti di scelta rapida in modo che il pulsante destro sia invocato per la pagina corrente?
Nella prima scheda, Ctrl+T dovrebbe far accadere qualcosa, ma al momento del passaggio alla seconda scheda, Ctrl+T Dovrei far accadere qualcos'altro.
È questo un momento per attivare TActionList.State
fra asNormal
e asSuspended
Quando i fogli di scheda vengono mostrati o nascosti?
Soluzione
Se vuoi Ctrl+T semplicemente per capovolgere tra attivo TabSheets
su a PageControl
, Quindi crea un singolo Azione, con un Ctrl+T scorciatoia e capovolgimento tra le pagine come richiesto:
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;
Altri suggerimenti
Se vuoi che una tazione faccia cose diverse a seconda di quale controllo lo ha avviato, basta guardare le azioni ActionComponent
proprietà. Agganciare tutti i controlli alla stessa azione.
Un'alternativa sarebbe quella di avere più azioni con lo stesso collegamento e abilitarle o disabilitarle nell'evento di aggiornamento in base a ciò che è visibile o focalizzato.