![]() |
Suchen einer Methode
Hallo,
ist es möglich eine Methode zu finden? Ich habe den Namen der Methode aus einer Datei. Und diese Methode möchte ich einen Button zuweisen. Name aus Datei: ShowFiles Methode: procedure TPrgFiles.ShowFiles(Sender: TObject); MFG Christian18 |
Re: Suchen einer Methode
Hi,
Das dürfte so funktionieren:
Delphi-Quellcode:
EDIT: Alles neu gemacht :mrgreen:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure Sieben(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var x: TMethod; begin x.Data := Button1; // Der zukünftige Besitzer der Methode x.Code := TForm1.MethodAddress('Sieben'); // Pointer zur Methode selbst Button1.OnClick := TNotifyEvent(x); end; procedure TForm1.Sieben(Sender: TObject); begin ShowMessage('Sieben!'); end; end. Gruß Neutral General |
Re: Suchen einer Methode
Hallo,
kann man irgendwie auch die Methode direkt aufrufen?
Delphi-Quellcode:
MFG Christian18
procedure TForm1.Button1Click(Sender: TObject);
var x: TMethod; begin x.Data := Button1; // Der zukünftige Besitzer der Methode x.Code := TForm1.MethodAddress('Sieben'); // Pointer zur Methode selbst TNotifyEvent(x); // gefundene Methode direkt hier ausführen ???? geht das?!?!? (so funktioniert es leider nicht) end; |
Re: Suchen einer Methode
Hallo,
ich habe es gerade selber herrausgefunden. Ich habe es so gemacht:
Delphi-Quellcode:
MFG Christian18
procedure TForm1.Neu(Sender: TObject); // Diese Methode soll gefunden werden.
begin ShowMessage('Neu'); end; procedure TForm1.Button1Click(Sender: TObject); begin TProcedure(Form1.MethodAddress('Neu')); // Methode finden und ausführen end; |
Re: Suchen einer Methode
Böse! So kannst du in der Methode weder auf Sender noch auf Self und damit auch nicht auf Felder der Instanz zugreifen.
|
Re: Suchen einer Methode
Hallo,
wie kann man es denn besser machen? MFG Christian18 |
Re: Suchen einer Methode
Hi,
versuchs mal so:
Delphi-Quellcode:
TDeineMethode = procedure (lala: Integer) of object;
var x: TMethod; y: TDeineMethode; begin x.Data := Button1; x.Code := TForm1.MethodAddress('Sieben'); y := TDeineMethode(x); y(5); end; |
Re: Suchen einer Methode
Ok, danke funktioniert.
|
Re: Suchen einer Methode
Ich bins nochmal.
Meinst du so?
Delphi-Quellcode:
So funktioniert es doch nicht so wirklich.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit3, Unit2; type TMeine = procedure (Sender: TObject) of object; type TForm1 = class(TForm) Button1: TButton; Frame21: TFrame2; Frame31: TFrame3; procedure Button1Click(Sender: TObject); procedure Sieben(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Sieben(Sender: TObject); begin Frame21.Visible:=False; Frame31.Visible:=False; end; procedure TForm1.Button1Click(Sender: TObject); var x: TMethod; y: TMeine; begin x.Data:=Button1; x.Code:=TForm1.MethodAddress('Sieben'); y:=TMeine(x); y(Sender); end; end. |
Re: Suchen einer Methode
Delphi-Quellcode:
wel es ja procedure TForm1.Sieben heißt.
x.Data=TForm1
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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