Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Alle Frames Visible False/Dyn. Methoden zuweisung --> Error (https://www.delphipraxis.net/111868-alle-frames-visible-false-dyn-methoden-zuweisung-error.html)

Christian18 10. Apr 2008 20:37


Alle Frames Visible False/Dyn. Methoden zuweisung --> Err
 
Hallo,

ich habe mir ein kleines Programm geschrieben, womit ich Frames ausblenden kann. Die Thematik, die dahinter steckt ist ein bisschen komplexer. Ich habe es mal ganz einfach dagestellt. Ich suche eine Methode aus einer Klasse. Und führe diese dann aus.

Hier mein Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit3, Unit2;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Frame21: TFrame2;
    Frame31: TFrame3;
    procedure DisableFrames(Sender: Tobject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DisableFrames(Sender: TObject);
begin
  Frame21.Visible:=False;
  Frame31.Visible:=False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TProcedure(Form1.MethodAddress('DisableFrames')); // --> Hier kommt eine zugriffsverletzung
end;

end.
Hat jemand eine Idee warum???

Delphi-Quellcode:
  TProcedure(Form1.MethodAddress('DisableFrames'));
Ich muss das leider so machen, weil eine Externe Datei entscheidet, mit welchen Click welche Methode aus welcher Klasse ausgeführt wird.

MFG Christian18

alleinherrscher 10. Apr 2008 21:36

Re: Alle Frames Visible False/Dyn. Methoden zuweisung -->
 
schau mal:

Delphi-Quellcode:


  if Form1.MethodAddress('DisableFrames')=nil then showmessage('existiert nicht');
Was schließen wir daraus? MethodAddress findet deine Procedure nicht und gibt nil zurück. Kein Wunder, dass du ne exception bekommst.

Wäre es nicht sinnvoller eine öffentliche procedure zu definieren und die dann zuzuweisen?

Delphi-Quellcode:
public

MyProcedure:TProcedure;

//...

MyProcedure:=DisableFrames;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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