AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verknüpfung von 2 Procedures

Ein Thema von Royal Ranger · begonnen am 28. Apr 2020 · letzter Beitrag vom 28. Apr 2020
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.556 Beiträge
 
Delphi 12 Athens
 
#5

AW: Verknüpfung von 2 Procedures

  Alt 28. Apr 2020, 12:12
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;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Apr 2020 um 12:57 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz