В этом анонсе мы хотим познакомить вас с теми нововведениями, которые появятся в версии 1.14.0.0.
Лицензии и коды активации
Начиная с версии 1.14.0.0 библиотека будет содержать систему защиты, которая построена на кодах активации и файлах лицензий. Каждому клиенту с активной подпиской был выслан индивидуальный код активации на email, привязанный к его учетной записи. Если по какой-то причине вы не получили свой код активации - свяжитесь с нами любым удобным для вас способом.
При старте Delphi с неактивированной версией библиотеки вам будет предложено ввести индивидуальный код активации.
После ввода кода активации на сервере происходит привязка вашей лицензии к текущему компьютеру (необходимо наличие активного подключения к сети Интернет), библиотека получает индивидуальный лицензионный файл, который сохраняется на компьютере и однозначно подтверждает ваше право на использование библиотеки. После активации вы можете продолжать пользоваться продуктом как обычно. Информацию о статусе активации и сроке бесплатных обновлений вы можете найти в окне о Delphi: "Help" -> "About Embarcadero RAD Studio".
Важные сведения, связанные с активацией библиотеки:
Допускается 3 (три) активации библиотеки на разных физических машинах, исходя из усредненной схемы использования: домашний, рабочий компьютеры и одна активация на случай смены физических комплектующих вашего компьютера. Однако, если по каким-то объективным причинам у вас будет потребность в дополнительных активациях, вы всегда можете связаться с нами любым удобным для вас способом. Не используйте активацию на чужих/ненужных компьютерах. Активацию необходимо производить каждый раз после установки новой версии библиотеки. При этом каждая активация библиотеки на одной и той же машине не считается за отдельную активацию. При обновлении продукта или приобретении новой подписки, вам будет выслан новый код активации, который действует на новый срок. При этом старый код продолжает действовать для старых версий библиотеки, как и ранее. Увеличенные сроки действия подписки
В ближайшее время мы планируем расширить тарифные планы путем добавления подписок на 6 месяцев и 1 год. Детали о тарифах будут опубликованы позднее.
Идентификация через сервис Google Sign in
Мы продолжаем пополнять поддержку новых сервисов идентификации клиентов. В версии 1.14.0.0 предлагаем новый компонент TfgGoogleSignInAuthenticationClient для идентификации клиента через сервис "Google Sign in". На текущий момент компонент реализован для Android платформы.
TfgCollectionView и ручное выделение
TfgCollectionView поддерживает разные режимы выделения элементов. Ранее при выделении элемента происходило визуальное отображение заднего фона всего элемента, согласно настройкам цвета SelectionColorName/SelectionColor. Однако, если вы используете в качестве элементов TfgCardPanel или другие виды контейнеров, то часто нужно выполнять изменение цвета не всего элемента, а только вложенного контейнера:
Advanced_animation.mp4.1f5461e85ffcf2d14b43e8518ef918c3.mp4
В версии 1.14.0.0 мы добавили возможность управлять внешним видом выделения элементов в ручном режиме, что открывает практически безграничные возможности по кастомизации. Новое свойство TfgCollectionView.SelectionOptions.DisplayingMode позволяет указать каким способом нужно отображать выделение. Доступно два способа отображения:
Auto - обычный (старый) режим. Компонент берет на себя ответственность по изменению внешнего вида выделенных элементов путем изменения цвета заднего фона элемента. (по умолчанию) 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" имеют свои оригинальные иконки, которые позволяют проще находить нужные компоненты в палитре компонентов.
- Read more...
- 0 comments
- 668 views