2012-12-20 17 views
6

Mam TToolBar stworzony w czasie projektowania bez ToolButtons. Moim pomysłem jest tworzenie ToolButtonów w środowisku wykonawczym i umieszczanie ich tam, kiedy moje formularze są tworzone, aby pokazać użytkownikowi, jakie formularze są otwierane, bez potrzeby otwierania menu "Windows" w menu głównym.Jak mogę przypisać zdarzenie OnClick ToolButton w czasie wykonywania?

Mam jednostkę o nazwie NavigationUtils.pas, której używam do przechowywania procedur/funkcji dotyczących nawigacji (jak tworzenie przycisków podczas tworzenia moich formularzy).

Pytanie brzmi: Jak skonfigurować zdarzenie OnClick po utworzeniu ToolButtons?

+1

'NewToolButton.OnClick: = ...' –

+1

Cześć, @DavidHeffernan, dobrze, próbowałem to i dostał błąd: ** NavigationUtils.pas (24): Typy niezgodne: "TNotifyEvent" i "procedura, wskaźnik bez typu lub parametr bez typu" ** – juniorgarcia

+0

Problem jest dokładnie taki, jak opisano. Próbujesz przypisać coś, co nie jest 'TNotifyEvent'. –

Odpowiedz

13

Z komentarzy jasno wynika, że ​​nie przypisujesz TNotifyEvent do wydarzenia OnClick. Deklaracja TNotifyEvent jest:

TNotifyEvent = procedure(Sender: TObject) of object; 

Więc trzeba procedurę, za pomocą jednego parametru typu TObject, a procedura musi być metoda obiektu. Tak, coś takiego:

procedure TMyForm.ToolButtonClick(Sender: TObject); 

a następnie można przypisać ją tak:

NewToolButton.OnClick := ToolButtonClick; 
+0

Tak, a wydarzenie musi być publiczne. –

+0

@RolandBengtsson No. Może to być prywatne. –

+1

Witaj, @ Davidsheffernan. Człowieku, znalazłem rozwiązanie podążające za tym, co widziałeś i dodając "MyOnClickEvent" w formularzu głównym, który zawiera pasek narzędzi utworzony w czasie projektowania. Właśnie skonfigurowałem zdarzenie ** toolbarFormsCustomDrawButton **, więc użyłem nadawcy zdarzenia jako nadawcy do procedury. Kliknij przycisk utworzony w czasie wykonywania, który wyszukuje formularz z podpisem nadawcy (TToolButton). Bardzo dziękuję za pomoc! – juniorgarcia

Powiązane problemy