2016-06-27 7 views
1

В Delphi 10.1 Berlin VCL приложения, в Параметры проекта на странице Внешний я добавил два стиля по умолчанию Windows, стиль:Невозможно получить выбранные стили тему VCL

enter image description here

В обработчик события FormShow у меня есть этот код:

procedure TForm1.FormShow(Sender: TObject); 
var 
    s: string; 
begin 
    // Show all available in application styles: 
    ComboBox1.Items.BeginUpdate; 
    try 
    ComboBox1.Items.Clear; 
    for s in TStyleManager.StyleNames do 
     ComboBox1.Items.Add(s); 
    ComboBox1.Sorted := True; 
    ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(TStyleManager.ActiveStyle.Name); 
    finally 
    ComboBox1.Items.EndUpdate; 
    end; 
end; 

Но, к сожалению, во время исполнения выпадающего содержит только ONE пункт: по умолчанию стиль для Windows:

enter image description here

Так как я могу получить все стили проверяются в Параметры проекта?

+0

Ваш код отлично работает для меня. Я вижу все три имени стиля в combobox. Единственное различие, которое я вижу, - в вашей кеше экрана диалогового окна «Внешний вид»; в моем, когда я выпадаю из списка, он сортируется в алфавитном порядке, а ваш нет. (На самом деле, это неправильно: если я выйду из диалогового окна и вернусь обратно, они снова будут несортированы и совпадут с вашими.) –

+0

Возможно, есть дополнительная опция для активации/регистрации стилей VCL? – user1580348

+0

Нет. Я создаю новую машину, поэтому я проверил на чистой, чистой установке в Берлине. Абсолютно ничего особенного вам не нужно делать. (Я на самом деле скопировал и вставил ваш код, а не удалял выпадающую форму в форме и добавлял Vcl.Themes к предложению uses, я больше ничего не делал.) –

ответ

0

Хотя TStyleManager класс в Vcl.Themes (который входит в uses пункте аппарата) и пример кода в вопросе не производит какой-либо ошибки компилятора, TStyleManager.StyleNames не дает правильные результаты: Это не возвращает дополнительный Стили VCL активируются в диалоговом окне «Параметры проекта».

TStyleManager.StyleNames Для того, чтобы реально работать, ОБА Vcl.Themes и Vcl.Styles должны содержаться в предложении файла проекта (.dpr) uses. (Я не уверен, упоминается ли это где-то в документации).

Это было подтверждено моими испытаниями. Спасибо @Uwe Raabe за советы!

+0

BTW и, к сожалению, ошибка «модальности» все еще не исправлена: при изменении стиля VCL внутри модального диалога это диалоговое окно теряет свою модальность! – user1580348

 Смежные вопросы

  • Нет связанных вопросов^_^