Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Die Daten vieler Objekte per Formularen ändern
matze - So 08.08.10 13:07
Titel: Die Daten vieler Objekte per Formularen ändern
Hallo liebes Forum,
Ich stehe gerade vor folgender Aufgabe:
Ich habe eine Applikation welche in sich sehr viele Objekte von vielen Klassen verwaltet. Jedes dieser Objekte hat diverse Eigenschaften und werde, die der Benutzer mittels eines Formulares ändern können muss.
Bisher habe ich das immer so gemacht, dass ich beim Create eines Formulares die Werte aus dem jeweiligen Objekt ausgelesen habe und den Edit Feldern zugewiesen habe. Im OnClick des OK-Buttons habe ich das ganze wieder umgekehrt gemacht.
Da es in dem aktuellen Projekt aber so viele verschiedene sind werde ich dabei wohl verrückt werden.
Die Frage nun: Wie kann man das einigermaßen elegant lösen?
Danke!
Matze
Kha - So 08.08.10 13:47
Hey,
über Reflection sollte sich relativ komfortabel zur Laufzeit aus einer Klasse eine Oberfläche generieren lassen, in meinem letzten Delphi-Projekt hatte ich auch etwas damit herumgespielt. Also Rtti.pas ab 2010, darunter die kryptische TypInfo.pas.
Wenn die Oberfläche allerdings noch für einzelne Klassen angepasst werden muss, müssten die Controls schon zur Design Time einmalig generiert werden. Ruby on Rails hat das unter dem Begriff
Scaffolding berühmt gemacht, bis zur VCL
scheint [
http://stackoverflow.com/questions/3388630/help-with-delphi-dfm-generation-based-on-database-tables-scaffolding] das aber noch nicht vorgedrungen sein.
Mit Reflection lassen sich aber auch einige Mittelwege konstruieren: Du könntest beispielsweise die Oberfläche von Hand erstellen, die einzelnen Controls dann aber automatisch mit den entsprechenden Eigenschaften anhands ihres Namens verdrahten lassen. Schon etwas weniger Boilerplate Code :) .
matze - So 08.08.10 14:46
Das hört sich doch schon mal recht gut an :-)
Nur: Hast du ein paar mehr Infos zu Reflection? Ist das ein Feature von Delphi oder Third-Party?
und wieso ist die TypInfo.pas kryptisch? Ist das bei 2010 besser?
Kha - So 08.08.10 17:06
Sind beide Teil der RTL. Schau dir einfach mal das Interface von TypInfo an und vergleiche es dann mit der schönen objektorientierten Rtti-API :) . Außerdem:
| Zitat: |
In Delphi 2009 and Prior RTTI was limited to items in the published section.
You had access to pointers for properties, fields and Methods on objects. If you spent some time learning, the old RTTI system was powerful. However, the power of the RTTI in prior versions seem very small when compared to what is now available in Delphi 2010.
In Delphi 2010 you have the option to have RTTI information for almost everything. The choice of what to include is yours, it is controlled by the new $RTTI directive. The default behavior is defined in System.pas shows that, properties and methods are now available via RTTI in both public and published sections, and Fields are available in all of the sections. |
Stammt aus dieser Serie, die sieht ganz gut aus:
http://robstechcorner.blogspot.com/2009/09/so-what-is-rtti-rtti-is-acronym-for-run.html
matze - Fr 13.08.10 15:04
Cool. Ich werd mir das mal anschauen und bei Bedarf noch mal nachfragen!
Danke dir!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!