2013-04-11 2 views
1

Это здорово, что Delphi XE3 и ниже имеют стили для наших приложений. Но я заметил, что мы можем отметить столько стилей, сколько хотим, и они выбирают, какой из них использовать по умолчанию.Как мы обнаруживаем и изменяем стили во время выполнения?

Это означает, что мы можем менять стили по желанию, но как это сделать в коде? И как позволить пользователю выбрать, какой стиль использовать в нашем программном обеспечении?

ответ

9

TStyleManager выполняет то, что вам нужно для выполнения этой задачи. Используйте TStyleManager.StyleNames, чтобы получить список стилей, и TStyleManager.TrySetStyle, чтобы изменить их во время выполнения.

Чтобы посмотреть, как это работает, запустите новый VCL Forms Application. Добавьте все стили VCL, которые вы хотите в проект, и оставьте TComboBox на форме. Вам нужно добавить пункт implementationuses, как я ниже:

uses 
    Vcl.Themes; 

procedure TForm1.ComboBox1Change(Sender: TObject); 
begin 
    TStyleManager.TrySetStyle(ComboBox1.Items[ComboBox1.ItemIndex]); 
end; 

procedure TForm1.FormShow(Sender: TObject); 
var 
    s: String; 
begin 
    ComboBox1.Items.BeginUpdate; 
    try 
    ComboBox1.Items.Clear; 
    for s in TStyleManager.StyleNames do 
     ComboBox1.Items.Add(s); 
    ComboBox1.Sorted := True; 
    // Select the style that's currently in use in the combobox 
    ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(TStyleManager.ActiveStyle.Name); 
    finally 
    ComboBox1.Items.EndUpdate; 
    end; 
end; 
+1

Как вы знаете так много? – PSyLoCKe

+8

Я прочитал исходный код VCL, доступную документацию, множество сообщений StackOverflow (даже те, о которых я ничего не знаю об этом просто интересно), и напишите много кода, чтобы попытаться выяснить разные вещи. :-) –

+0

@EASI Очень часто мы не знаем ответа и просто делаем поиск в Интернете, чтобы узнать. Вот как я нашел обман этого вопроса. –

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