В статье “Хамелеон” подробно рассматривался механизм управления стилями оформления приложений, созданных на платформе 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() внешний вид формы настроек преобразился:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *