2012-12-20 8 views
6

Ho un TToolBar creato in fase di progettazione senza ToolButtons. La mia idea è di creare ToolButtons in runtime e inserirli lì quando vengono creati i miei moduli, solo per mostrare all'utente quali moduli sono aperti senza dover aprire un menu "Windows" nel menu principale.Come posso assegnare l'evento OnClick di un ToolButton in fase di esecuzione?

Ho un'unità denominata NavigationUtils.pas che utilizzo per memorizzare le procedure/funzioni relative alla navigazione (come la creazione dei pulsanti quando vengono creati i moduli).

La domanda è: come posso configurare l'evento OnClick quando vengono creati i ToolButtons?

+1

'NewToolButton.OnClick: = ...' –

+1

Ciao, @DavidHeffernan, beh, ho provato questo e ha ottenuto l'errore: ** NavigationUtils.pas (24): tipi incompatibili: 'TNotifyEvent' e 'procedura, puntatore senza tipo o parametro non tipizzato' ** – juniorgarcia

+0

Bene, il problema è esattamente come descritto. Stai cercando di assegnare qualcosa che non sia un 'TNotifyEvent'. –

risposta

13

Dai commenti è chiaro che non si sta assegnando un TNotifyEvent all'evento OnClick. La dichiarazione di TNotifyEvent è:

TNotifyEvent = procedure(Sender: TObject) of object; 

quindi è necessario un procedimento, con un unico parametro di tipo TObject, e la procedura deve essere il metodo di un oggetto. Quindi, qualcosa di simile:

procedure TMyForm.ToolButtonClick(Sender: TObject); 

E poi è possibile assegnare in questo modo:

NewToolButton.OnClick := ToolButtonClick; 
+0

Sì e l'evento deve essere pubblico. –

+0

@RolandBengtsson No. Può essere privato. –

+1

Ciao, @DavidHeffernan. Amico, ho trovato la soluzione seguendo ciò che hai visto e aggiungendo "MyOnClickEvent" nel modulo principale, che contiene una barra degli strumenti realizzata in fase di progettazione. Ho appena configurato l'evento della toolbar ** toolbarFormsCustomDrawButton **, quindi ho usato il Sender dell'evento come Sender per la procedura OnClick di quel pulsante creato in runtime che cerca un modulo con la didascalia del Sender (TToolButton). Grazie mille per l'aiuto! – juniorgarcia

Problemi correlati