AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie übergebe ich eine Prozedur als Parameter?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie übergebe ich eine Prozedur als Parameter?

Ein Thema von Gonzo2 · begonnen am 23. Sep 2008 · letzter Beitrag vom 23. Sep 2008
Antwort Antwort
Gonzo2

Registriert seit: 4. Nov 2007
42 Beiträge
 
#1

Wie übergebe ich eine Prozedur als Parameter?

  Alt 23. Sep 2008, 19:18
Also ich will in etwas das machen

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure ButtonClick(Sender: TObject);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ButtonClick(Sender: TObject);
begin
  ShowMessage('Test');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Button1.OnClick := ButtonClick; // <=====
end;
Ich weise dem OnClick Ereignis des Button1 eine Prozedur zu. Soweit kein Problem. Allerdings möchte ich das nicht direkt machen sondern über eine zweite Prozedur

Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
begin
  ShowMessage('Test');
end;

procedure machwas(???);
begin
  Button1.OnClick := ???;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  machwas(?ButtonClick?);
end;
Wie kann man das machen? Ich möchte die Prozedur als Parameter übergeben.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Wie übergebe ich eine Prozedur als Parameter?

  Alt 23. Sep 2008, 19:22
Du musst dafür nur den Typen des Methodenzeigers kennen, der in deinem Fall TNotifyEvent ist.
Delphi-Quellcode:
procedure machwas(AEvent: TNotifyEvent);
begin
  Button1.OnClick := AEvent;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  machwas(ButtonClick);
end;
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Wie übergebe ich eine Prozedur als Parameter?

  Alt 23. Sep 2008, 19:34
Delphi-Quellcode:
procedure Machwas(Proc: TNotifyEvent);
begin
...
end;
TNotifyEvent ist so deklariert:
TNotifyEvent = procedure(TObject) of object; Auf diese Weise kannst du dir auch Zeigertypen für funktionen und prozeduren mit eigenen Parametern deklarieren. Wenn es keine Prozedur einer Klasse bzw eines Objektes ist, lässt du das of Object eifnach weg.

Zu Risikien und Nebenwirkungen fragen Sie Ihre Delphihilfe

[add]da denkt man, der beitrag wäre abgesendet und wechselt in einen anderen Tab, dabei funkt einem der Kasten dazwischen...[/add]
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz