Why don't Default ap_* units use DefineClassByRTTI

A customer recently complained that a DBComboBox.Text property that once worked no longer does in an upgrade we gave them. I got it to work by switching the default ap_DBctrls.pas unit to use DefineClassByRTTI for DBComboBox and now DBComboBox.Text now works correctly. Is there any reason why new Scripter versions don't use this for all ap_*.pas default units?


Rhett Price

For historical reasons, exactly to keep backward compatibility. So we try to keep the files exactly the same even for newer Delphi versions.

Another simple reason is that DefineClassByRTTI is way easier to use than previous method. With the old RTTI, imported files (and an import tool) was really needed because registering a single class with several methods and properties would require a significant amount of work. Which is not the case now, so you wouldn't even have a strong need for the import files, using DefineClassByRTTI in some key classes you want to use is enough and give you even more control about what's being registered and what's not. 

That makes sense. Might be nice to have an alternate directory at some point with the standard components only using DefineClasByRTTI. Not a huge deal though. Thanks for the clarification.