Mam takie pytanko mam 2 buttony 1 i 2
w buttonie2 w zakładce evnts mam procedure on change i nazwa procedury
Jak ja wykonac po nacisnieciu buttona 1 zeby wywołał procedure onchange w buttonie 2.
:)
Mam takie pytanko mam 2 buttony 1 i 2
w buttonie2 w zakładce evnts mam procedure on change i nazwa procedury
Jak ja wykonac po nacisnieciu buttona 1 zeby wywołał procedure onchange w buttonie 2.
:)
OnChange w buttonie ?
Albo recznie wpisujesz wywolanie tejze procedury obslugi zdarzenia w obsludze zdarzenia buttona nr 1, albo wybierasz ja z listy procedur "dozwolonych", ktora pojawia sie po wybraniu tegoz zdarzenia w Object Inspectorze.
W buttonie 2 mam procedure onclick i chaciałbym ja uzyc w trakcie wykonywania programu z buttona 1.
TForm2.Button2Click(Sender: TObject)
wpisujac to trzeba podac sender: tObiect jak to zdobyc i co to jest??
Jeżeli rozumiem:
Procedure TForm2.Button1Click(Sender: TObject);
Begin
Button2Click(Button1); //Button2Click(self);
End;
Odpowiadając krótko na Twoje pytanie: Sender to obiekt który zainicjował dane zdarzenie (w tym przypadku naciśnięcie przycisku).
Jeżeli w procedurze Button2Click nie sprawdzasz jaki jest Sender, czyli jaki przycisk wywołał procedurę (bo jedną procedurę można przypisać do kilku przycisków), to możesz wpisać w zasadzie dowolny obiekt np: Button1, Button2, Sender, Self, Form1. Dla przebiegu procedury nie ma to znaczenia. Napisałem w zasadzie, bo tylko dwa pierwsze obiekty są typu TButton i tego typu powinny być w procedurze obsługi przycisku typu TButton. Najlepiej jednak napisz po prostu Button2.Click, wtedy nie trzeba podawać żadnego Sendera i wiadomo, że chodzi o przycisk Button2.
procedure TForm1.Button1Click(Sender: TObject);
begin
// Ewentualne instrukcje
Button2.Click;
end;
Jest też inna możliwość. Przypisujesz przyciskom Button1 i Button2 jedną procedurę obsługi zdarzenia OnClick i zależnie od tego, który przycisk został naciśnięty wykonujesz odpowiednie instrukcje. To, który przycisk został naciśnięty rozpoznajesz po jego właściwości Name. Przykład
procedure TForm1.Button1or2Click(Sender: TObject);
begin
if (Sender as TButton).Name = 'Button1' then begin
Label1.Caption:= 'Nacisnąłeś Button1';
end
else if (Sender as TButton).Name = 'Button2' then begin
Label1.Caption:= 'Nacisnąłęś Button2';
end;
end;
Na koniec jeszcze dodaj trzeci przycisk (tak dla testu) i w procedurze OnClick napisz
procedure TForm1.Button3Click(Sender: TObject);
begin
// Button1.Click;
// Button2.Click;
// Button1or2Click(Button1);
// Button1or2Click(Button2);
// Button1or2Click(Sender);
// Button1or2Click(Self); // Self = Form1
end;
Usuwaj po kolei komentarze przy jednej z linii i zobacz co się stanie, jaki napis pojawi się w Label1. Mam nadzieję, że to Ci trochę wyjaśni jak stosować parametr Sender
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.