| Autor |
Beitrag |
Daniel L.
      
Beiträge: 140
Erhaltene Danke: 14
W7, W8
TurboD Prof, Delphi Community
|
Verfasst: Mo 06.09.10 19:47
Hallo,
bin leider nicht so OOP fit, deshalb eine Frage:
ich nutze ein Object TDieses = class
In TDieses ist eine Ereigniss deklariert: OnEspassiert
Nun brauche ich 10 Instanzen von diesem Object:
Delphi-Quelltext 1:
| var diese: array [0..9] of TDieses; |
creieren:
Delphi-Quelltext 1:
| for i := to 9 do diese [i] := TDieses.create; |
Soweit so gut.
Jetzt möchte ich in einer Espassiert Procedure rauskriegen, von welcher Instanz das Ereigniss ausgelöst wurde, um dann unterschiedlich reagieren zu können.
Delphi-Quelltext 1: 2: 3: 4:
| procedure Espassiert (Sender : TObject); begin if "durch diese [8] ausgelöst" then... end; |
Wie würde man das machen ?
(Es folgt natülich noch:
Delphi-Quelltext 1:
| for i := to 9 do diese [i].onespassiert := Espassiert) |
Danke + Gruss: Daniel
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
Stundenplan
      
Beiträge: 128
Erhaltene Danke: 32
Win 7
Delphi 7 Pers., C# (VS 2010 Express)
|
Verfasst: Mo 06.09.10 19:56
Hallo!
In Sender steht das Objekt, dessen Ereignis aufgerufen wird.
Viele Grüße,
Stundenplan.
|
|
Daniel L. 
      
Beiträge: 140
Erhaltene Danke: 14
W7, W8
TurboD Prof, Delphi Community
|
Verfasst: Mo 06.09.10 20:30
Meinst du sender.classname?
Da steht TDieses drin, nicht aber die auslösenden Instanz.
Daniel
|
|
NewMori
      
Beiträge: 45
Erhaltene Danke: 1
|
Verfasst: Mo 06.09.10 20:33
_________________ Es ist keine Kunst in ein Programm 20 Fehler zu schreiben. Die Kunst ist es das Programm dann noch zum laufen zu bekommen.
|
|
Daniel L. 
      
Beiträge: 140
Erhaltene Danke: 14
W7, W8
TurboD Prof, Delphi Community
|
Verfasst: Mo 06.09.10 20:45
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 07.09.10 06:44
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Di 07.09.10 07:45
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Di 07.09.10 08:21
Nur mal so als kleine Anregung:
Statt eines Array's könnte man evtl. auch eleganter eine TObjectlist verwenden und in der dann recht einfach mit ObjectList.IndexOf(Sender) das richtige Objekt ermitteln.
Dadurch fällt zum einen die elende Schleifensucherei weg und zum andern bietet die Objectlist noch einige andere Vorteile.
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
Daniel L. 
      
Beiträge: 140
Erhaltene Danke: 14
W7, W8
TurboD Prof, Delphi Community
|
Verfasst: Di 07.09.10 14:15
Ich habs so gemacht Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| function Tmain.GetSenderIndex (Sender : TObject) : integer; var i, r : integer; begin r := -1; for i := 0 to 9 do if sender = dies [i] then r := i; result := r; end; |
Daniel
|
|
NewMori
      
Beiträge: 45
Erhaltene Danke: 1
|
Verfasst: Di 07.09.10 15:11
@Daniel: Du kannst nachdem if True ist die Schleife abbrechen, da du dein Objekt ja dann schon gefunden hast und die anderen es nicht mehr sein können.
_________________ Es ist keine Kunst in ein Programm 20 Fehler zu schreiben. Die Kunst ist es das Programm dann noch zum laufen zu bekommen.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 07.09.10 20:17
Moin!
Sofern die Liste statisch ist: das Objekt um eine Index-Property erweitern und beim Create den Index im Feld mitgeben. Dann kann man direkt darauf zugreifen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|