Graeme, thanks for the feedback.
To everyone, I already have a plan for a basic theme system for all
platforms which I'll be publishing as a design time package soon. It will
work using text theme define files, and apply properties values to
everything in the IDE using a pattern matching system with groups. It will
search for published properties of all controls inside the IDE, changing
them to the values specified in the define file. It will also provide a
preview of changes to a select group of controls such that you can preview
a theme by clicking on its name from a list of available themes.
The drawback to this approach is that some elements in certain toolkits
aren't themeable using strictly property values. Scrollbars are one example
already mentioned, but this problem also applies to some buttons, toolbars,
page tabs, and I'm sure a few other things. But I think this will the best
that can be hoped for given the current design of LCL controls.
I do have a plan to allow for theming of icons/glyphs inside the IDE,
including the menu, tree view, and component icons. All revertible of
Finally, I believe the proper solution to a fully themeable IDE would be to
use custom painted controls for the entirety of the IDE. It wouldn't really
be that hard. I've coded my own tree view, list view, edits, buttons, menus
and such from scratch on a few platforms. It would be more portable as
well. It's just a bit tedious. If implemented it probably should use a more
advanced graphics subsystem that does not mimic plain old GDI/TCanvas. I'll
leave that someone else someday.
Lazarus mailing list