Jump to content

Анонс 1.14.0.0


Здравствуйте, уважаемые разработчики.

В этом анонсе мы хотим познакомить вас с теми нововведениями, которые появятся в версии 1.14.0.0.

Лицензии и коды активации

Начиная с версии 1.14.0.0 библиотека будет содержать систему защиты, которая построена на кодах активации и файлах лицензий. Каждому клиенту с активной подпиской был выслан индивидуальный код активации на email, привязанный к его учетной записи. Если по какой-то причине вы не получили свой код активации - свяжитесь с нами любым удобным для вас способом.

При старте Delphi с неактивированной версией библиотеки вам будет предложено ввести индивидуальный код активации.

image.png

После ввода кода активации на сервере происходит привязка вашей лицензии к текущему компьютеру (необходимо наличие активного подключения к сети Интернет), библиотека получает индивидуальный лицензионный файл, который сохраняется на компьютере и однозначно подтверждает ваше право на использование библиотеки. После активации вы можете продолжать пользоваться продуктом как обычно. Информацию о статусе активации и сроке бесплатных обновлений вы можете найти в окне о Delphi: "Help" -> "About Embarcadero RAD Studio".

image.png

Важные сведения, связанные с активацией библиотеки:

  • Допускается 3 (три) активации библиотеки на разных физических машинах, исходя из усредненной схемы использования: домашний, рабочий компьютеры и одна активация на случай смены физических комплектующих вашего компьютера. Однако, если по каким-то объективным причинам у вас будет потребность в дополнительных активациях, вы всегда можете связаться с нами любым удобным для вас способом. Не используйте активацию на чужих/ненужных компьютерах.
  • Активацию необходимо производить каждый раз после установки новой версии библиотеки. При этом каждая активация библиотеки на одной и той же машине не считается за отдельную активацию.
  • При обновлении продукта или приобретении новой подписки, вам будет выслан новый код активации, который действует на новый срок. При этом старый код продолжает действовать для старых версий библиотеки, как и ранее.

Увеличенные сроки действия подписки 

В ближайшее время мы планируем расширить тарифные планы путем добавления подписок на 6 месяцев и 1 год. Детали о тарифах будут опубликованы позднее.

Идентификация через сервис Google Sign in

Мы продолжаем пополнять поддержку новых сервисов идентификации клиентов. В версии 1.14.0.0 предлагаем новый компонент TfgGoogleSignInAuthenticationClient для идентификации клиента через сервис "Google Sign in". На текущий момент компонент реализован для Android платформы.

TfgCollectionView и ручное выделение 

TfgCollectionView поддерживает разные режимы выделения элементов. Ранее при выделении элемента происходило визуальное отображение заднего фона всего элемента, согласно настройкам цвета SelectionColorName/SelectionColor. Однако, если вы используете в качестве элементов TfgCardPanel или другие виды контейнеров, то часто нужно выполнять изменение цвета не всего элемента, а только вложенного контейнера:

В версии 1.14.0.0 мы добавили возможность управлять внешним видом выделения элементов в ручном режиме, что открывает практически безграничные возможности по кастомизации. Новое свойство TfgCollectionView.SelectionOptions.DisplayingMode позволяет указать каким способом нужно отображать выделение. Доступно два способа отображения:

  1. Auto - обычный (старый) режим. Компонент берет на себя ответственность по изменению внешнего вида выделенных элементов путем изменения цвета заднего фона элемента. (по умолчанию)
  2. Manual - ручной режим. В этом режиме компонент делегирует разработчику работу по изменению внешнего вида выделенных элементов. О необходимости выделить/сбросить элемент компонент сообщает с помощью нового события OnUpdateItemSelectionAppearance.

В ручном режиме вам необходимо выполнить визуальное выделение или сброс выделения у переданного элемента в событии OnUpdateItemSelectionAppearance. Это событие вызывается каждый раз, когда списку необходимо обновить состояние элемента. Среди аргументов события передается информация о:

  • AItem - обертка для работы с элементом.
  • AIsSelected - признак состояния выделения элемента.
  • AInitiator - Кто инициатор обновления выделения элемента. Если вы хотите добавить анимации в процесс выделения элемента, то ориентируйтесь на этот флаг. Если пользователь нажимает на элемент, то в этом параметре будет значение "User", в противном случае "Control".

Типичный код ручного выделения может выглядеть так:

procedure TFormMain.fgCollectionView1UpdateItemSelectionAppearance(Sender: TObject; const AItem: TfgItemWrapper; const AIsSelected: Boolean; const AInitiator: TfgItemSelectionInitiator);
var
  BackgroundPanel: TfgCardPanel;
  PrimaryLabel: TfgLabel;
begin
  // Извлекаем ссылку на фон и текстовую метку в элементе
  BackgroundPanel := AItem.GetControlByLookupName<TfgCardPanel>('background');
  PrimaryLabel := AItem.GetControlByLookupName<TfgLabel>('primary');
  
  // Определяем параметры цвета выделения фона панели и цвета текста.
  if AIsSelected then
  begin
    BackgroundPanel.BackgroundColorName := R.Theme.Color.PRIMARY_LIGHT_PRIMARY;
    PrimaryLabel.ColorName := R.Theme.Color.ON_PRIMARY_TEXT;
  end
  else
  begin
    BackgroundPanel.BackgroundColorName := '';
    PrimaryLabel.ColorName := '';
  end;
 
  // Опционально, можно выполнить любую анимацию
  if AInitiator = TfgItemSelectionInitiator.User then
    BackgroundPanel.Shake;
end;

Добавлен новый демонстрационный пример: "Компоненты" -> "TfgCollectionView" -> "Ручное отображение выделения".

TfgControlEnumerators

Теперь доступны два энумератора по обходу дерева компонентов с возможностью управлять обходом. Оба энумератора доступы в классе TfgControlEnumerators.

  • TfgControlEnumerators.Enum - Корень -> First..Last child
  • TfgControlEnumerators.ReverseEnum - Корень -> Last..First child

Например, обход по всем TfgEdit может выглядеть так:

TfgControlEnumerators.Enum(Form,
  procedure (const AChild: TfgControl; var AAction: TfgEnumControlsAction)
  begin
    if AChild is TfgEdit then
      TfgLog.Debug(AChild.ToString);
  end);

Помимо обычного обхода есть возможность делать контролируемый обход. Например, поиск поля ввода:

TfgControlEnumerators.Enum(Form,
  procedure (const AChild: TfgControl; var AAction: TfgEnumControlsAction)
  begin
    if AChild is TfgEdit then
    begin
      TfgLog.Debug('Edit: ' + AChild.ToString);
      AAction := TfgEnumControlsAction.Stop;
    end
    else
      AAction := TfgEnumControlsAction.Continue;
  end);

Через параметр AAction анонимной функции можно передать дальнейшее направление действия по обходу компонентов:

  • Continue - Перейти к следующему компоненту;
  • Discard - Перейти к соседнему компоненту;
  • Stop - Остановить обход.

Маленькие приятности

Теперь компоненты из групп "FGX: Standard" и "FGX: Layout" имеют свои оригинальные иконки, которые позволяют проще находить нужные компоненты в палитре компонентов.

image.pngimage.png

 

  • Like 9

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...