Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ereignisse in vererbten Klassen (https://www.delphipraxis.net/77928-ereignisse-vererbten-klassen.html)

TH3LL 26. Sep 2006 21:39


Ereignisse in vererbten Klassen
 
Hallo, ich habe eine Frage zum erstellen von Ereignissen in vererbten oder neuen Klassen.

Als Beispiel:

Ich erstelle mit folgendem Code 300 Objekte des Typs XShape, das nur ein Kind des Typs TShape ist, aber um eine beliebige Prozedur erweitert wurde:
Delphi-Quellcode:
type
  XShape= class(TShape)
    prozedur Beliebig(i:integer);
  end;
...
Delphi-Quellcode:

procedure Starten;
var x:integer;
Shapes:Array[1..300] of XShape;
Begin
  for x:= 1 to 300 do
    Begin
      Xshape:=TShape.Create(Form1);
      Xshape.Parent:=Form1;
    end;
end;
Wie kann ich jetzt ein Event definieren, das Ein Ereignis durch Interaktion mit einem der (ja während der Laufzeit erstellten) XShapes auslöst, wie zum Beispiel XShape[25]Click ?? Also quasi ein Allgemein vordfiniertes Event OnXShapeClick, das mit der Erstellung des XShapes gleich mit erstellt wird?

Ich brauche nämlich auf diese Weise 300 Onclick, Onmousemove, On... und und und..
Ich erstelle die dinger ja schliesslich zur Laufzeit um nicht alle 300 Manuell machen zu müssen ;)

Wisst ihr rat?

Vielen dank schonmal! :roll:

mkinzler 26. Sep 2006 21:46

Re: Ereignisse in vererbten Klassen
 
Du willst den XShapes automatsich Eventsmethoden vererben?

Delphi-Quellcode:
procedure TXShape.Klick( Sender: TObject);
begin
...
end;

Constructor TXShape.Create;
begin
 ...
  self.onClick = self.Klick;
...
end;

TH3LL 27. Sep 2006 05:40

Re: Ereignisse in vererbten Klassen
 
Auf die Idee hätte ich auch kommen können... ;)
Vielen dank!

Musste den constructor zwar umbenennen weil TShape schon einen "Create"-Konstruktor hat, aber jetzt gehts :D

Danke :lol:

SirThornberry 27. Sep 2006 06:30

Re: Ereignisse in vererbten Klassen
 
Zitat:

Zitat von TH3LL
Auf die Idee hätte ich auch kommen können... ;)
Vielen dank!

Musste den constructor zwar umbenennen weil TShape schon einen "Create"-Konstruktor hat, aber jetzt gehts :D

Danke :lol:

Du solltest den Constructor eher überschreiben und nicht umbenennen.

Und anstelle das "OnClick" zu zuweisen solltest du lieber die Methode "Click" überschreiben. Ansonsten hättest du ein Problem wenn später jemand im Objectinspektor ein OnClick vergibt. In dem Fall wäre dein OnClick nämlich wieder außer kraft.


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