Brovin Yaroslav

fgx [RX] [FGX] Описание версии 0.7.1.112

1 сообщение в этой теме

Описание

Эта версия включает в себя следующий набор компонентов:

  • Дизайнер итемов - дизайнер итемов.
  • TfgToast - класс отображения быстрых сообщений
  • TfgFlipView - слайдер изображений. Поддерживает несколько способов переключения фотографий при помощи эффектов и сдвигов. При первом использовании ОБЯЗАТЕЛЬНО прочитать инструкцию "TfgFlipView - Инструкция загрузки стиля"
  • TfgPositionAnimation - анимация свойств типа TPosition
  • TfgPosition3DAnimation - анимация свойств типа TPosition3D 
  • TfgBitmapLinkAnimation - анимация свойств типа TBitmapLink 
  • TfgProgressDialog (UPDATED) - Компонент для отображения диалогового окна в момент выполнения длительной фоновой операции, когда время выполнения фоновой операции можно оценить.
  • TfgActivityDialog (UPDATED) - компонент для отображения диалогового окна в момент выполнения длительной фоновой операции, когда время выполнения операции не возможно адекватно оценить.
  • TfgActionSheet (UPDATED) - Аналог контекстного меню для мобильных платформ.
  • TfgColorsPanel - Палитра цветов с возможностью выбора цвета.
  • TfgGradientEdit - Компонент выбора градиента.
  • TfgLinkedLabel  - Метка поддерживающая открытие Web ссылки в браузере по умолчанию.
  • TfgApplicationEvents (UPDATED) - компонент с возможностью легко задать обработчики на основные события приложения: Отслеживание смены состояния приложения, простой, обновление и выполнение действий Actions, Изменение ориентации устройства и тд.
  • TfgVirtualKeyboard - компонент облегчающий работу с виртуальной клавиатурой. Позволяет задать пользовательские кнопки над виртуальной клавиатурой под iOS, а так же отлавливать события по отображению и скрытию клавиатуры.
  • Зарегистрированы все стилевые объекты на вкладке "FGX: Style objects"

Список изменений

  • TfgActionSheet:
    • Добавлены и реализованы события TfgActionSheet.OnShow, TfgActionSheet.OnHide, TfgActionSheet.OnItemClick
    • Добавлены свойство TfgActionSheet.Theme, позволяющее выбрать вариант темы: Auto - выбирает темную или светлую тему автоматически на основании текущего стиля; Light - использует светлую тему; Dark - темную
    • Обновлен пример ActionSheetDemo.
  • TfgApplicationEvents - добавлены новые событии:
    • OnActivityResult (Андроид) - позволяет получить результаты/интенты из других приложений.
    • OnFormBeforeShown - вызывает непосредственно до момент отображения формы
    • OnFormActive - Вызывается, когда форма активируется.
    • OnFormDeactivate - Вызывается, когда форма деактивируется
    • OnFormCreate - Вызывается после создания экземпляра формы
    • OnFormDestroy - Вызывается до разрушения формы
    • OnScaleChanged - Вызывается, когда меняется скейл у формы. Например, при перетаскивании формы с одного экрана с одним скейлом на другой с другим скейлом (Больше актуально для OSX)
  • TfgProgressDialog, TfgActivityDialog:
    • Добавлены свойство Theme, позволяющее выбрать вариант темы: Auto - выбирает темную или светлую тему автоматически на основании текущего стиля; Light - использует светлую тему; Dark - темную.
  • Общие изменения:
    • Ассерты перенесены в скоп TfgAssert.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

  • Похожие публикации

    • Автор: Евгений Корепов
      Господа и товарищи, помогите тупому мне! Столкнулся с странным. Под windows все отлично работает, а под android не могу добиться загрузки картинок. Мозг уже сломал.
      Собрал тестовый проект - в ListView (DynamicAppearance) добавляем 4 ListViewItem, в ListViewUpdatingObjects все создаем и грузим картинки из инета (потоки и прочее убрал для упрощения). Картанка слева, текст (URL) справа, проще некуда. Прилагаю к сообщению архив проекта и код.
      unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.ListView.Types, FMX.ListView.Appearances, FMX.ListView.Adapters.Base, FMX.ListView, System.Net.HTTPClient, FMX.Objects; type TFormMain = class(TForm) ListView: TListView; procedure ListViewUpdatingObjects(const Sender: TObject; const AItem: TListViewItem; var AHandled: Boolean); procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } ListViewUpdate : Boolean; procedure MyListViewUpdateObjects(const AListView: TListView; const AItem: TListViewItem); procedure InitListView(AListView : TListView); function LoadImageFromURL(AURL : String) : TBitmap; end; var FormMain: TFormMain; implementation {$R *.fmx} procedure TFormMain.FormCreate(Sender: TObject); begin ListViewUpdate:=False; end; procedure TFormMain.FormShow(Sender: TObject); begin InitListView(ListView); end; procedure TFormMain.InitListView(AListView : TListView); Var AListViewItem : TListViewItem; AImageURL : String; begin AImageURL:='http://kayfolom.ru/images/test/'; ListViewUpdate:=True; AListViewItem:=AListView.Items.Add; AListViewItem.Data['ImageURL']:=AImageURL + 'logo.png'; ListViewUpdate:=False; AListViewItem.Adapter.ResetView(AListViewItem); ListViewUpdate:=True; AListViewItem:=AListView.Items.Add; AListViewItem.Data['ImageURL']:=AImageURL + '000487806d3a2ab98aeb2c47b810fc8b.jpg'; ListViewUpdate:=False; AListViewItem.Adapter.ResetView(AListViewItem); ListViewUpdate:=True; AListViewItem:=AListView.Items.Add; AListViewItem.Data['ImageURL']:=AImageURL + '0012ef6cb42e95268a4cd1d832a2b93a.jpg'; ListViewUpdate:=False; AListViewItem.Adapter.ResetView(AListViewItem); ListViewUpdate:=True; AListViewItem:=AListView.Items.Add; AListViewItem.Data['ImageURL']:=AImageURL + '0022454ccb4f81a701cb3a3c89d52d2f.jpg'; ListViewUpdate:=False; AListViewItem.Adapter.ResetView(AListViewItem); end; procedure TFormMain.ListViewUpdatingObjects(const Sender: TObject; const AItem: TListViewItem; var AHandled: Boolean); begin if Not ListViewUpdate then begin MyListViewUpdateObjects(Sender as TListView, AItem); AHandled:=True; end; end; procedure TFormMain.MyListViewUpdateObjects(const AListView: TListView; const AItem: TListViewItem); Var AName : TListItemText; AImage : TListItemImage; AvailableWidth, ImageWidth, ImageHeight : single; function SetupTextObject(const AName, AText : String; AFontSize : Single; AFontStyles : TFontStyles; AWidth, AHeight, X , Y : Single; AAlign, AVertAlign: TListItemAlign; ATextAlign, ATextVertAlign: TTextAlign) : TListItemText; begin Result:=TListItemText(AItem.View.FindDrawable(AName)); if Result=Nil then Result:=TListItemText.Create(AItem); Result.Name:=AName; Result.Width:=AWidth; Result.WordWrap:=True; Result.Font.Size:=AFontSize; Result.Font.Style:=Result.Font.Style + AFontStyles; Result.Trimming:=TTextTrimming.None; Result.Text:=AText; Result.PlaceOffset.X:=X; Result.PlaceOffset.Y:=Y; Result.Align:=AAlign; Result.VertAlign:=AVertAlign; Result.TextAlign:=ATextAlign; Result.TextVertAlign:=ATextVertAlign; Result.Height:=AHeight; end; function SetupImageObject(const AName : String; AWidth, AHeight, X , Y : Single; AAlign, AVertAlign: TListItemAlign) : TListItemImage; Var AImageURL : String; begin Result:=TListItemImage(AItem.View.FindDrawable(AName)); if Result=Nil then begin Result:=TListItemImage.Create(AItem); AImageURL:=AItem.Data['ImageURL'].AsString; Result.Bitmap:=LoadImageFromURL(AImageURL); end; Result.Name:=AName; Result.Width:=AWidth; Result.Height:=AHeight; Result.PlaceOffset.X:=X; Result.PlaceOffset.Y:=Y; Result.Align:=AAlign; Result.VertAlign:=AVertAlign; Result.ScalingMode:=TImageScalingMode.StretchWithAspect; end; begin AvailableWidth:=AListView.Width - AListView.ItemSpaces.Left - AListView.ItemSpaces.Right; // Изображение размещаем слева ImageWidth:=AvailableWidth / 3; ImageHeight:=AvailableWidth / 3; AImage:=SetupImageObject('Image', ImageWidth, ImageHeight, 0, 0, TListItemAlign.Leading, TListItemAlign.Leading); // Текст справа AName:=SetupTextObject('Name', AItem.Data['ImageURL'].AsString, 14, [], AvailableWidth - ImageWidth, ImageHeight, ImageWidth, 0, TListItemAlign.Leading, TListItemAlign.Leading, TTextAlign.Center, TTextAlign.Center); AItem.Height:=Round(ImageHeight + AListView.ItemSpaces.Top + AListView.ItemSpaces.Bottom); end; function TFormMain.LoadImageFromURL(AURL : String) : TBitmap; Var AHTTPClient : THTTPClient; AStream : TMemoryStream; HTTPResponse : IHTTPResponse; begin Result:=Nil; AHTTPClient:=THTTPClient.Create; AStream:=TMemoryStream.Create; try HTTPResponse:=AHTTPClient.Get(AURL, AStream); finally if HTTPResponse.StatusCode=200 then Result:=TBitmap.CreateFromStream(AStream); end; end; end.  
      test092 ListView with Image.7z
    • Автор: FeLDMARShaL
      Будет ли реализованна поддержка новой версии Delphi?
      Ну и любимый вопрос для разработчика ... хотя бы примерные сроки, ну или хотя бы на како этапе сейчас развитие проекта?
    • Автор: rakhmet
      Оказался в крайне идиотской ситуации: единственный iPhone 5s был обновлён до 10.2. Даже не спрашивайте как - рассказать всё равно не смогу, один глаз уже и так дёргается 
       
      В общем, Xcode 8.0 не работает с iOS 10.2. Обновить старенький Xcode 8.0 я не могу, потому что с обновлённым Xcode 8.2, в свою очередь, не работает Delphi Berlin Update 2. При этом откатить iOS могу максимум до 10.1, но мне нужна минимум iOS 10.0 - просто чтобы хотя бы заткнуть Xcode 8.0 
       
      Что можно сделать?
    • Автор: Рагим
      Доброго времени суток. Пишу мобильное приложение на Delphi Berlin. Добавил вибрацию при нажатии на кнопку. На Андроид 4.4.2 все работает нормально, на Андроид 6 при нажатии на кнопку приложение вылетает. Проблема точно в вибрации, так как при отсутствии вибрации все работает нормально. В качестве процедуры вибрации использую следующий код:
      procedure Vibr; //Процедура вибрации var   VibratorObj: JObject;   Vibrator: JVibrator; begin   VibratorObj := SharedActivity.getSystemService(TJActivity.JavaClass.VIBRATOR_SERVICE);   Vibrator := TJVibrator.Wrap((VibratorObj as ILocalObject).GetObjectID);   if Vibrator.hasVibrator() then     Vibrator.vibrate(200); end;  
      Как по Вашему, в чем может быть причина?
    • Автор: gresaggr
      Как избежать повторных нажатий/ закликиваний на кнопку?
      Имеется следующий код:
      procedure Tfm.ButtonPrevCardClick(Sender: TObject);
      begin
        ButtonPrevCard.Enabled := false;
        Application.ProcessMessages;

       // здесь код по смене карты + пауза в 2 секунды

        ButtonPrevCard.Enabled := true;
        Application.ProcessMessages;
      end;
      Под Windows повторных нажатий/закликиваний при этом не происходит.
      А под Андроид, если пользователь быстро подряд нажал несколько раз, то сработает также несколько раз.
       
    • Автор: Dmitry Sobko
      У меня другая проблема, посмотрите скриншот http://joxi.ru/KAxejoocopD9r8, не могу запустить ни один демо проект на андроиде. Помогите пожалуйста.
       
      ---------------------
      От модератора: Сообщения вынесены в отдельную тему в соответствии с правилами. Скриншот загружен на форум, под спойлер.
    • Автор: tuliosantana
      Ошибка при установке компонента FGX
      [dcc32 Fatal Error] FGX.Asserts.pas(159): F2039 Could not create output file 'c:\program files (x86)\embarcadero\studio\17.0\lib\Win32\Debug\FGX.Asserts.dcu'
    • Автор: Pulsarius
      Всем привет! У меня такой вопрос. Я настроил порядок сортировки групп компонентов в Tool Palette через Tools -> Options -> Environment Options -> Component Toolbar, но при сохранении настроек и перезапуске студии никаких изменений в Tool Palette не наблюдается, всё равно остаётся дефолтная сортировка. RAD Studio Berlin.
    • Автор: Рагим
      Добрый день. Решил сегодня сделать некоторые доработки в приложение написанное на XE7 под Андроид и столкнулся со следующей проблемой: приложение не получает информацию через связку TIdTCPClient/TIdTCPServer. До этого все работало.
      Отправляю сообщение с компьютера через TIdTCPClient:
      try     form2.IdTCPClient1.Connect;     form2.IdTCPClient1.IOHandler.WriteLn(ss,enUTF8);     form2.IdTCPClient1.Disconnect;    except      showmessage('Error');      end;     end;//try получаю (вернее не получаю) на телефоне под Андроид:
      procedure TForm1.IdTCPServer1Execute(AContext: TIdContext); begin  l := AContext.Connection.IOHandler.ReadLn(enUTF8);  showmessage(l); end;  
      В чем может быть проблема и как решить?
    • Автор: Рагим
      Доброго времени суток.
      Есть приложение на Windows (сервер) и есть от 1 до 4 приложений (клиенты) на Андроид. Все устройства в сети. IP адреса клиентов не известны серверу, а адрес сервера клиентам. Приложения после того как узнают адреса друг друга, будут обмениваться сообщениями через TIdTcpClient и TIdTcpServer. 
      Как лучше реализовать распознавание клиентов в сети? Делаю сейчас используя Tethering, но способ мне не нравится.
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу