Непередаваемое ощущение сломанного тессеракта...    
 
   
 (Зато без лишних списков которые того гляди запутаются при повтором чтении  )

Это как-бы исправленный код для возможности пропатчить  несколько динамически созданных списков RadioButton .
(Разумеется все привязано к конкретной программе но сама по себе идея вполне масштабируется  )
- Код: Выделить всё
- E:=ScrollBox1.GetEnumeratorControls;// Левел 1  ( обычный ScrollBox)
 while E.MoveNext do
 begin
 C1:=TPanel(E.Current);  If TPanel(C1).ControlCount>1 then // Левел 2  Панель параметра
 begin
 C1:=TPanel(TPanel(C1).Controls[1]);//Левел 3  панель внутри панели
 //(возможно что это слабое место (нумерация контролов не очень надежная штука ), но пока вроде работает )
 
 If (TPanel(C1).ControlCount>0) And (TPanel(C1.Controls[0]).ClassType=TRadioButton) then
 
 With TPanel(c1).GetEnumeratorControls do // Левел 4  собственно список RadioButton
 //(наконец врубился  фишку с GetEnumerator оказывается их можно вообще без переменной использовать )
 begin
 while MoveNext do UxTheme.SetWindowTheme(TWinControl(Current).Handle,nil,'');
 free;
 end;
 end
 end;
 E.Free;
 
(Интересно можно ли это "чудовище" немного оптимизировать ?  )
Добавлено спустя 9 минут 4 секунды:Alexander писал(а):Ну да, так и есть. Тогда может быть написать багрепорт разработчикам Лазаруса да и всё ?
Не думаю что это вина Лазаруса и Дельфи ... Это товарищи мелкомягкие мудрят. 
( При включении "плоского режима" все работает как часы так что  LCL все делает верно  )
Зы
Интересно можно ли принудительно отключить манифест?  Сдается мне что в этом случае многое станет работать как надо !
Зы Зы 
Замечен но продолен странный глюк (перестала показываться рамка выбора RadioButton  ) 
Ну поскольку я и так хотел поравить фокус при старте то это ерунда  легко задвинулась .
Но что это было не понял.  
 
 Впрочем это винда где периодически возможно почти ВСЕ !