zdarzenia

0

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.

:)

0

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.

0

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

0

Jeżeli rozumiem:

Procedure TForm2.Button1Click(Sender: TObject);
Begin
 Button2Click(Button1); //Button2Click(self);
End;
0

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.