Come faccio a fare un tasto di scelta rapida fare cose diverse a seconda della pagina della scheda attiva?

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

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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top