В статье “Хамелеон” подробно рассматривался механизм управления стилями оформления приложений, созданных на платформе My Visual Database, а в качестве элемента выбора стиля предлагается использовать пункт главного меню.

Решение простое, но список пунктов для выбора стиля получился внушительный, он перетягивает всё внимание пользователя на себя. Это было хорошо для демонстрационного приложения, но в рабочем проекте процесс выбора стиля должен выглядеть скромней.
Я хочу обратить ваше внимание на существующий пункт главного меню: Инструменты – Настройка, при выборе которого открывается окно с настройками приложения.

Мне кажется, что именно здесь должен находиться элемент выбора стиля. Для реализации задуманного необходимо добавить ещё одну вкладку, назвав её “Внешний вид”. На этой вкладке расположить выпадающий список для выбора стиля.
procedure Style_CreateOptions;
// добавление настройки стилей в стандартное окно настроек
var
tmpSheet: TTabSheet;
tmpCombo: TdbComboBox;
tmpLabel: TdbLabel;
begin
// добавить вкладку
tmpSheet := TTabSheet.Create( frmOptionsDBCore );
tmpSheet.Name := 'tshViewMode';
tmpSheet.PageControl := frmOptionsDBCore.PageControl1;
tmpSheet.Caption := 'Внешний вид';
// добавить список со стилями
tmpCombo := Style_CreateComboBox( frmOptionsDBCore );
tmpCombo.Parent := tmpSheet;
tmpCombo.Top := 30;
tmpCombo.Left := 10;
// добавить метку
tmpLabel := TdbLabel.Create( frmOptionsDBCore );
tmpLabel.Parent := tmpSheet;
tmpLabel.Top := 14;
tmpLabel.Left := 10;
tmpLabel.Caption := 'Стиль';
end;
Code language: Delphi (delphi)
Если в приложении имеется своё окно с настройками, то вполне логично вынести функционал по формированию выпадающего списка со стилями в отдельные процедуры:
function Style_CreateComboBox( AForm: TForm ):TdbComboBox;
// создание выпадающего списка со стилями
var
i: integer;
begin
Result := TdbComboBox.Create(AForm);
Result.Parent := AForm;
Result.onChange := @Style_ComboBox_OnChange;
// добавим записи для смены стиля
for i := 0 to Length(arStyles) - 1 do
begin
Result.dbAddRecord( i, arStyles[i] );
// выбрать текущий стиль
if arStyles[i] = currentStyleName then
Result.dbItemID := i;
end;
end;
procedure Style_ComboBox_OnChange (Sender: TObject);
// выбор стиля из списка
begin
Style_SetStyle( TdbComboBox(Sender).Text );
end;
Code language: PHP (php)
После вызова процедуры Style_CreateOptions() внешний вид формы настроек преобразился:

Напишите в комментариях, что бы вы ещё хотели узнать о стилях? Какие функции добавить? Например, нужен ли браузер стилей: список стилей с текстовым описанием и иллюстрацией внешнего вида, которое приобретает приложение после его применения?