Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Event - mehrere Prozeduren?


Mitmischer 1703 - Sa 24.04.10 16:03
Titel: Event - mehrere Prozeduren?
Hi DF!

In Delphi Prism oder C# ist es möglich, einem EventHandler mehrere Prozeduren zuzuweisen. Ist das auch in Delphi möglich?


jfheins - Sa 24.04.10 16:37

Nein, nicht ohne größere Modifikationen.


Mitmischer 1703 - Sa 24.04.10 16:45

Schade.

Geht das dann nicht mit einem array of TNotifyEvent?


Xion - Sa 24.04.10 16:53

Wenn du es für deine Klasse machen willst, kein Problem...aber standardmäßig geht das wohl leider nicht.


Mitmischer 1703 - Sa 24.04.10 17:26

Schade :(

Wieder ein Grund mehr für Delphi Prism *duck*


ffgorcky - Mo 26.04.10 19:52

Du kannst doch in Deiner Procedure entsprechend die anderen Procedures aufrufen - recht das so in etwa nicht auch?:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure ButtonMachMehrereSachenOnClick(Sender:TObject);
begin
Edit1.OnChange(Sender);
Combobox.SelectedIndexChanged(Sender);
ButtonOK.OnClick(Sender);
end;

Das ist jetzt so einfach aus den Kopf zusammengeschrieben - also keine Richtigkeitsansprüche.


Mitmischer 1703 - Mo 26.04.10 19:57

Ja, bloß, dass ich mir die anderen Funktionen zur Laufzeit zuweise :?


ffgorcky - Mo 26.04.10 20:17

Dafür wüde mir jetzt nur diese Lösung einfallen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
for momentanerIndex:=0 to durzufuehrendesIntArray.Items.Count-1 do
 case durzufuehrendesIntArray.Items[momentanerIndex] of
  0begin 
    //dann tue jetzt mal dieses
  end;
  1begin 
    //dann tue jetzt mal jenes
  end;
  2begin 
    //dann tue jetzt mal was anderes
  end;
  3begin 
    //dann tue jetzt mal noch was anderes
  end;
 end;//der Case-Anweisung und da dieses ja die einzige Anweisung der For-Schleife ist auch dieser

Dazu bräuchtest Du ja nur ein Integer-Array, in dem Du zur Laufzeit entsprechend die Zahlen zuordnest.
Ich hoffe mal, dass das bei Dir so machbar ist & auch klappt


Allesquarks - Mo 26.04.10 20:29

Oder du benutzt dafür die Methodenzeiger, wie ja die events selber schon, bloß dass du halt deine Funktion dazwischen klemmst und dann alle Funktionen des arrays direkt aufrufst. Das geht prinzipiell dann auch dynamisch.