Hallo,
Ich würde alle Klassen, die Ereignisse empfangen sollen in einer separaten Liste registrieren. Dann würde ich diese Liste abfragen und jedem selektierten bzw fokussierten Objekt die Ereignisse senden.
Pseudocode:
Delphi-Quellcode:
begin
RegisterClass(MyApplic);
RegisterClass(MyWindow);
RegisterClass(MyDesktop);
for Index:=0 to Registered.Count-1 do
begin
if TMyControl(Registered[Index]).Selected then
begin
TMyControl(Registered[Index]).DoEvent1;
TMyControl(Registered[Index]).DoEvent2;
TMyControl(Registered[Index]).DoEventN;
...
Registered.Remove(Index);
end;
end;
Anschließend können/müssen die bearbeiteten Ereignisse aud der Liste entfernt werden, damit sie nicht noch einmal abgearbeitet werden.