16 Aplikacje w Delphi. Przykłady
Nagłówki procedur obsługi zdarzeń, a także szkielet takiej procedury w części implementacyjnej modułu są tworzone automatycznie po dwukrotnym kliknięciu tego komponentu podczas projektowania lub po dwukrotnym kliknięciu w okienku Inspektora Obiektów w polu, które znajduje się z prawej strony nazwy zdarzenia (zakładka Events). W zależności od typu komponentu dwukrotne kliknięcie tego komponentu w fazie projektowania najczęściej powoduje wejście do procedury obsługi zdarzenia OnClick (np. dla TButton, TLabel, TImage, TListBox) lub zdarzenia OnChange (np. dla TEdit, TScrollBar, TMemo, TComboBox). W przypadku formularza dwukrotne kliknięcie spowoduje utworzenie szkieletu procedury obsługi zdarzenia OnCreate, występującego podczas tworzenia formularza. W procedurze tej zwykle wpisuje się ustawienia początkowe dla programu.
Na przykład dwukrotne kliknięcie przycisku o standardowej nazwie Buttonl (w fazie projektowania) powoduje dopisanie do definicji klasy TForml nagłówka procedury ButtonlCl ick oraz ustawienie kursora wewnątrz bloku procedury w części implementacyjnej modułu:
type
TForml = class(TForin)
Buttonl: TButton:
procedurę ButtonlClick(Sender: TObject): private
{ Private declarations } public
{ Public declarations } end: var
Forml: TForml;
implementation
{SR *.dfm}
procedurę TForml.ButtonlClickCSender: TObject): begin
//tu wpisujemy instrukcje, które zostaną wykonane po uruchomieniu programu //i kliknięciu przycisku Buttonl. end; end.
Parametr procedury ButtonlCl ick o nazwie Sender identyfikuje obiekt, w którego kontekście wystąpiło dane zdarzenie. Może być wykorzystany w sytuacji, gdy dana procedura zdarzeniowa jest przypisana do kilku różnych zdarzeń dla różnych obiektów. Przykładowo, jeśli w okienku Inspektora Obiektów obok nazwy zdarzenia OnClick dla przycisku Buttonl pojawi się nazwa procedury ButtonlCl ick i tę samą nazwę przypiszemy dla zdarzenia OnClick komponentu Image 1, to w procedurze można sprawdzić, dla którego komponentu wystąpiło zdarzenie, za pomocą instrukcji: if Sender is TButton then ... lub if Sender is TImage then ..., unikając w ten sposób pisania kolejnych procedur obsługi zdarzeń. Przykłady wykonywania tych samych operacji dla wielu komponentów przedstawiono w rozdziale 20.
Najczęściej występujące zdarzenia dla komponentów wynikają z wykonania następujących czynności: