Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Tutorial für visuelle Komponenten gesucht

  Alt 16. Sep 2006, 13:13
Moin xaromz
Schnappe dir einfach mal den Refletor und "surfe" durch die FCL. Das ist praktisch so als würdest du in den VCL Sourcen wühlen, nur ein wenig geordneter, weil typenbezogen.

Was Jürgen mit Events meint ist ein kleiner Kulturschock von Delphianern wenn sie es mit .Net zu tun bekommen.
In Delphi32 hieß ein event OnClick und war einfach nur eine property eines Funktionszeigers.
In .Net heißt er dann Click und ein Event ist dort ein eigener Membertyp.
Er ähnelt ener Property, doch anstatt get_/set_ haben seine Accessor die prefixe add_ und remove_.
Konsumenten deiner Klasse können also nur Delegateinstanzen hinzufügen oder ihre eigenen entfernen, aber nicht direkt den ganzen Event besetzen und somit auch nicht andere Eventhandler überschreiben.
In C# sähe das so aus:
Code:
public event DeinDelegate DeinEvent;

protected virtual void OnDeinEvent()
{
   DeinDelegate deinEvent = DeinEvent;
   if(deinEvent != null)
     deinEvent(someParameter);
}
Entgegen den Hirnies in die die MSDN Docs zu dem Thema schrieben, solltest du bei der Abfrage ob dein Event leer ist nicht das Eventfeld hernehmen.
Delegates sind immutable, d.h. wenn jemand zwischen deiner Null-Prüfung und dem Ausführen den letzten Verweis eines Handlers in einem anderen Thread entfernt, würde dein Feld null sein. Und du würdest versuchen einen null-Zeiger auszuführen.
Deshalb packe ich es immer in eine lokale Variable und prüfen die bevor ich sie ausführe.

btw: Am 25.10. ist mal wieder DP Stammtisch in M., da kannst du mich ja persönlich ausquetschen.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat