Home > Programowanie > Co to jest Sender w procedurach zdarzeń?

Co to jest Sender w procedurach zdarzeń?

Mały wpis dla początkujących programistów Delphi. Co to jest i do czego służy parametr Sender, występujący niemal zawsze przy procedurach zdarzeń (np.: naciśnięcia przycisku)?

W skrócie, jest to wskaźnik na obiekt który wywołuje dane zdarzenie. Jeśli widzimy to w zdarzeniu OnClick przycisku, to jest to właśnie wskaźnik na ten przycisk (oczywiście trzeba go rzutować na TButton aby odnieść się do jego własności).

Ktoś może zapytać, po co mi coś takiego, skoro dobrze wiem które zdarzenie przypisane jest któremu przyciskowi? Ano po to, że istnieje możliwość przypisania tego samego zdarzenia kilku obiektom, a nie tylko jednemu.

Weźmy prosty przykład, mam na formie 3 przyciski o różnych etykietach. Załóżmy że chcę, po kliknięciu w każdy z nich, aby na belce okna wyświetlała się etykieta tego klikniętego. W tradycyjnym podejściu należało by oprogramować 3 zdarzenia kliknięcia. My zrobimy to w jednym, wykorzystując parametr Sender, oraz przypisując owe zdarzenie do wszystkich przycisków:

procedure TForm1.ButtonClick(Sender: TObject);
begin
  Caption := TButton(Sender).Caption;
end;

I to już wszystko! Przy pierwszym przycisku utworzyłem nowy event (zmieniając nieco jego nazwę), przy kolejnych wybrałem go z rozwijanej listy dla zdarzenia OnClick. Szybko, łatwo i bez zbędnego kodu.

  1. dfhbd
    29 czerwca 2010 at 21:01 | #1

    dopisz jeszcze np. dwa sposoby na znalezienie danego typu komponentów

  1. Brak jeszcze trackbacków