Непередаваемое ощущение сломанного тессеракта...
(Зато без лишних списков которые того гляди запутаются при повтором чтении )
Это как-бы исправленный код для возможности пропатчить несколько динамически созданных списков 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 )
Ну поскольку я и так хотел поравить фокус при старте то это ерунда легко задвинулась .
Но что это было не понял.
Впрочем это винда где периодически возможно почти ВСЕ !