![]() |
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:
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?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; 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: |
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; |
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: |
Re: Ereignisse in vererbten Klassen
Zitat:
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