verschiedene Varianten, um Button1Click auszuführen
Delphi-Quellcode:
{ die Kurzfassung für TButton.Click, als Beispiel was es macht.
Viele Events haben so eine Methode, wo sie ausgeführt werden.
z.B. für OnXYZ heißen die oft XYZ oder DoXYZ
procedure TControl.Click;
begin
if Assigned(OnClick) then
OnClick(Self);
end;}
type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Button1Click(nil);
Button1Click(Self); // Sender = TForm1
Button1Click(Sender); // Sender = Timer1
Button1Click(Timer1); // es geht auch manuell
Button1Click(Button1);
Button1Click(Button2); // es geht auch alles Andere (vor allem wenn ein Event für mehrere Komponenten/Eventzeiger)
Button1.OnClick(nil);
Button1.OnClick(Sender);
Button1.OnClick(Button1);
...
Button1.Click; // ruft das auf, was an OnClick hängt
end;
Bei einem anderen Sender kann man in Button1Click über
if Sender = ...
entscheiden von wem das aufgerufen wurde.
nil = aus dem Code, nicht von einer Komponente
unserem Sender aka Timer1 = aus dem Event von Timer1
Bei Timer1.OnTimer nicht Timer1Timer sondern direkt Button1Click zugewiesen/angehängt, ist das Gleiche wie wie
Button1Click(Sender);
bzw.
Button1Click(Timer1);
.
Oder wie wäre es mit komplett auftrennen?
Delphi-Quellcode:
procedure TForm2.ShpBallDown; // als private Methode in TForm2
begin
inc(y);
ShpBall.Top := y;
end;
procedure TForm2.OnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if key = VK_Space then
ShpBallDown;
end;
procedure TForm2.OnTimer(Sender: TObject);
begin
ShpBallDown;
end;