![]() |
Wie übergebe ich eine Prozedur als Parameter?
Also ich will in etwas das machen
Delphi-Quellcode:
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
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;
Delphi-Quellcode:
Wie kann man das machen? Ich möchte die Prozedur als Parameter übergeben.
procedure TForm1.ButtonClick(Sender: TObject);
begin ShowMessage('Test'); end; procedure machwas(???); begin Button1.OnClick := ???; end; procedure TForm1.Button2Click(Sender: TObject); begin machwas(?ButtonClick?); end; |
Re: Wie übergebe ich eine Prozedur als Parameter?
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; |
Re: Wie übergebe ich eine Prozedur als Parameter?
Delphi-Quellcode:
TNotifyEvent ist so deklariert:
procedure Machwas(Proc: TNotifyEvent);
begin ... end;
Delphi-Quellcode:
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.
TNotifyEvent = procedure(TObject) of object;
Zu Risikien und Nebenwirkungen fragen Sie Ihre Delphihilfe :zwinker: [add]da denkt man, der beitrag wäre abgesendet und wechselt in einen anderen Tab, dabei funkt einem der Kasten dazwischen...[/add] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:28 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 by Thomas Breitkreuz