Kosmetik und refactoring:
Da Du englische Beschreibungen und englische Variablennamen verwendest, solltest Du bezüglich der Rechtschreibung nochmal nachbessern (InProgres, Kommaregeln, Im Englischen werden '-' selten verwendet. '
query result', statt '
query-result')
Weiterhin solltest Du dich an die Delphi-Konvention zur Bennung von Events und Recordmembers halten. Events verschicken in ihrem ersten Parameter i.A. sich selbst, also statt:
TMyEvent = Procedure (Parameter : TType) Of Object;
lieber
TMyEvent = Procedure (Sender : TObject; Parameter : TType) Of Object;
Und dann beim Abfeuern des Events;
fMyEvent (Self, MyParameter);
Anstatt
Delphi-Quellcode:
If Assigned (fEvent) Then
fEvent(Self)
Solltest Du jedem Event ein
Procedure MyClass.DoEvent;
Delphi-Quellcode:
Begin
If Assigned (fEvent) Then
fEvent(Self)
End;
spendieren. Im Code rufst Du dann 'DoEvent' auf, das erhöht die Übersichtlichkeit. Für jeden Event 'fXXXXX' schreibst Du eine private Methode 'DoXXXXX'.
Statt Records kannst Du vielleicht noch Klassen deklarieren, falls die Ergebnisse (TPlayList, TPlayListItem) eine Funktionalität besitzen oder besitzen sollen.
Das ist aber kein Muss: Nur ist es dann irgendwie konformer.