Podmiana procedury kliknięcia przycisku

0

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ć?

4

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;
4

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ę.

2
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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1