2012-03-28 5 views
12

Есть ли хороший учебник VCL Styles, где мы видим, как динамически (во время выполнения) загружать/изменять стиль?Учебник стилей Delphi VCL - как изменить стиль во время выполнения

Это должно работать с Delphi XE2 и выше, поскольку XE2 является первой версией с VCL Styles.

+0

Есть много стилей VCL связанных ссылки на http://www.tindex.net/VCL/VCLStyles.html – LachlanG

+0

быть тщательно с модальным окном. все еще ошибка в DX10 - http://stackoverflow.com/questions/33606625/delphi-xe7-dx10-using-tstylemanager-trysetstyle-in-runtime-when-modal-window-d – Zam

ответ

24

Я добавляю ответ, потому что местная информация часто предпочитают просто ссылки.

Вот основные факты, которые нужно знать, прежде чем начать:

  1. Многие элементы управления VCL имеют цветовые свойства, но эти свойства собираются игнорируются, когда стили включены, и «общие элементы управления» по умолчанию например, Button, нарисованы самим Delphi, вместо того, чтобы использовать стиль XP или Windows 2000, который «поставляется с окнами».

  2. Как-то глубоко в рамках вашего приложения стили VCL ставят крючки, которые захватывают ваши элементы управления. Все, что он может обработать, будет нарисовано с помощью «скина» поверх обычных элементов управления. Многие люди называют это «skinning vcl», а до стилей VCL вы могли бы найти стороннюю систему скинов. Теперь он встроен.

  3. Все, что не подключено, по-прежнему будет иметь обычный стиль. Поэтому большинство сторонних элементов управления и некоторые бит VCL не будут тематизироваться. Не ожидайте идеальных мгновенных результатов. Кроме того, вы можете иногда видеть некоторые мгновенные мерцания или сбои в результате скининга, этого и следовало ожидать. Добавьте загрузку стилей во время выполнения, и конечный результат вашего результата - это догадка. Вы не можете гарантировать, что стиль, который загружается во время выполнения, будет содержать все, что вы можете захотеть, чтобы оно содержалось. Вы также не можете гарантировать, что с одним из них, который вы статически включаете в свое приложение, но, по крайней мере, те, которые вы статически включаете, могут быть проверены вашей командой QA (которая может быть вами).

И вот простейшие шаги, которые нужно начать: действительно необходимы только шаги № 2 по №4.

  1. Нажмите Файл -> Создать -> Проект VCL Forms.

  2. Щелкните правой кнопкой мыши по параметрам проекта в панели диспетчера проектов и выберите свойства. Перейдите к Приложению -> Внешний вид

  3. Нажмите на собственный стиль, чтобы включить его. (Amakrits является первым в моем списке, поэтому я нажму на него).

  4. Нажмите на поле со списком по умолчанию и измените его на значение, отличное от значения по умолчанию.

  5. Поместите что-нибудь в свою форму, чтобы оно не было пустым. (Кнопка, список и т. Д.).

  6. Запустите приложение.

enter image description here

Теперь, продвинутый материал: Изменить стиль во время выполнения:

Я использую эту кнопку мыши и FormCreate сделать:

Добавить fdefaultStyleName:String; в уединенной части ваша форма.

Удостоверьтесь, что Vcl.Themes находится в вашей статье использования.

procedure TForm1.Button1Click(Sender: TObject); 
begin 
if Assigned(TStyleManager.ActiveStyle) and (TStyleManager.ActiveStyle.Name<>'Windows') then begin 
    TStyleManager.TrySetStyle('Windows'); 
end else begin 
    TStyleManager.TrySetStyle(fdefaultStyleName); // whatever was in the project settings. 
end; 

end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
if Assigned(TStyleManager.ActiveStyle) then 
    fdefaultStyleName := TStyleManager.ActiveStyle.Name; 

end; 
19

См RRUZ страница для многих вещей о VCL стилях.

Вот основной демо, где вы можете загрузить несколько стилей динамически: exploring-delphi-xe2-vcl-styles-part-i

2

Пример (публичная процедура). Помните, использует Vcl.Themes;

procedure TData.AllowSKIN(bSKIN:boolean); 
var 
    sSKIN:string; 
begin 
    sSKIN := 'Aqua Light Slate'; 
    if not bSKIN then sSKIN := 'Windows'; 
    TStyleManager.TrySetStyle(sSKIN); 
end; 
Смежные вопросы