Przykładowo:
mam Button i dwie procedury test1 i test2, chcę mieć możliwość podmiany procedur które bedą uruchamiane tym przyciskiem raz test1 drugi raz test2. Jak to zrobić?
Normalnie przypisujesz sobie procedurę do zdarzenia OnClick
czyli:
Button1.OnClick:= ClickPierwsza;
Przy czym procedura musi być typu TNotifyEvent
a wiec jej parametrem będzie Sender
, obiekt którego to zdarzenie dotyczy:
procedure TForm1.ClickPierwsza(Sender: TObject);
begin
//
end;
Albo druga opcja - masz jedna procedurę onclick i jej nie zmieniasz, a w jej treści masz jakiegoś if'a, który sprawdza ustalony przez ciebie warunek i w zależności od tego co ustali - wywołuje pierwszą albo drugą procedurę.
piter2004 napisał(a):
[…] chcę mieć możliwość podmiany procedur które bedą uruchamiane tym przyciskiem raz test1 drugi raz test2.
Nie procedur, a metod, bo procedury nie da się bezpośrednio przypisać. Jeśli o OnClick
chodzi, to należy przypisać metodę proceduralną, zgodną parametrami z typem TNotifyEvent
. Tak więc aby bezpośrednie przypisanie było prawidłowe, należy użyć metody jakiejś klasy. Oczywiście da się to obejść i faktycznie przypisać zwyczajną procedurę – trzeba skorzystać z typu TMethod
, wypełnić pola i taką strukturkę użyć do przypisania. Ale to nieco bardziej skomplikowane.
Oba podane wyżej rozwiązania są poprawne, a to które powinieneś wybrać, zależy od konkretnych wymagań, których nie podałeś. Czepiam się dlatego, że warto używać właściwej nomenklatury, bo co jakiś czas ktoś próbuje do zdarzenia bezpośrednio przypisać zwykłą procedurę i dziwi się, że mu się to nie kompiluje.