This seems to be a mistake. I assume you are using runtime packages. In XE7, such a project will not compile - this is the correct behavior. In XE8, it compiles, apparently using the VCL runtime package and ignoring the modified block.
Edit:
Note that even in previous versions of Delphi, changing the VCL module using runtime packages would require repackaging the changed packages and their dependencies (in this case vcl and rtl). In other words, you cannot just use a modified block when linking to a run-time package that contains another copy of this device. Module names must be unique throughout the entire project area, including the main executable and all associated runtime packages.
So, the solution for you is either:
- do not use runtime packages, or
- repackage all necessary units into your own runtime packages and associate them with them instead of the supplied Embarcadero rtl, vcl, etc.
source share