Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#77

AW: Trennung von GUI und Logik, wie geht ihr vor?

  Alt 20. Aug 2011, 13:37
DSharp gefällt mir echt gut und ich experimentiere damit jetzt etwas rum.
Freut mich, bei Fragen, Anregungen oder Bugs, einfach ne pm oder email an mich
Binding kommt ja erst mit XE2, DSharp von Stevie funktioniert erst ab D2010 so einigermaßen wegen den Generics. Ich hab jetzt noch nicht mit Google gesucht, aber gibt es denn weitere Binding-Komponenten?
Nicht in dem Umfang und mit den Features, die ich implementiert habe, welche Zielsetzung ich verfolge, habe ich in einem meiner ersten Blogposts erläutert. Es gibt einige Mechanismen auch in anderen Komponenten (die data sensitiven Controls, wo man z.B. den Fieldname setzt). Ich kann auch schon in Delphi 7 und früher 2 Objekte verbinden, und sie miteinander kommunizieren lassen, ohne, dass sie sich gegenseitig kennen müssen. Meine Grenzen sind aber nunmal da, wo die Sprachunterstützung aufhört. Der größte Kritikpunkt wurde ja schon genannt, es ist string basiert, da es keinen language/compiler support für property binding gibt. Und die Notifications bei der Änderung einer Property muss auch selber implementiert werden, damit die angeschlossenen Bindings darüber informiert werden und die Gegenseite aktualisieren. Beides Dinge die meiner Meinung nach einfach zu implementieren wären und einen großen Schritt auch für RAD bedeuten würden.

Es gibt einige entscheidende Gründe, warum die derzeitige Lösung ab 2010 funktioniert - ich glaube aber alles davon könnte mit Abstrichen hier und da anders implementiert werden, um es auch in alten Delphi Versionen lauffähig zu machen:
  • Multicast Events - die Implementierung, die ich gewählt habe, macht von Generics Gebrauch, so, dass ich aus jedem beliebigen Event typ (z.B. TNotifyEvent) ein Multicast Event machen kann. Würde aber auch ohne gehen, dann müsste man die konkreten Typen halt auscodieren, ähnlich wie man früher typisierte Objektlisten gebaut hat.
  • RTTI - Eigenschaften von den einfachsten Objekten sollen bindable sein, geht nur mit der RTTI ab 2010, bei der alten ist man auf published Properties und TPersistent Derivate angewiesen.
  • verbesserte Designtime Unterstützung - irgendwann zwischen Delphi 7 und Delphi 2009 wurden einige Erweiterungen für den OI gemacht, indem man selber dort Properties registrieren kann, die aber eigentlich garnicht Teil den Objekts sind - die gebrauche ich, um den dafür registrierten Controls die DataBinding Eigentschaft zu verpassen, sobald eine TBindingGroup auf dem Form oder Frame liegt - darauf müsste man verzichten, aber man kann ja immernoch über die BindingGroup selber Bindings anlegen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (20. Aug 2011 um 13:39 Uhr)
  Mit Zitat antworten Zitat