Jump to content

Stas

Members
  • Posts

    536
  • Joined

  • Last visited

  • Days Won

    75

Everything posted by Stas

  1. 1) Delphi 10.3.3 IOS 14.2 Ipad Mini 4 SDK 13.5 XCode 11.5 2)Создадим приложение с одной формой на которую добавим TfgDrawerLayout с TFgListMenu в TfgDrawer 3)В TfgListMenu Добавим в дизайне один пункт меню с обязательным(!!!) присваиванием иконки (IconName) 3а) Запустим и убедимся в работоспособности 4)Добавим обработчик procedure TFormMain.fgFormCreate(Sender: TObject); begin fgListMenu1.Items.BeginUpdate; //Необходимо, ибо упадет сразу with TfgListMenuItem(fgListMenu1.Items.Add) do begin Name:='Test2'; Title:='Test2'; end; fgListMenu1.Items.EndUpdate; //Необходимо, ибо упадет сразу end; 4а) Запустим и убедимся в неработоспособности 5) С таким вот стеком System.NotifyReRaise(System.TObject*, void*)(0x0000000282788d20,0x00000001a8e6b474) System._RaiseAtExcept(System.TObject*, void*)(0x0000000282788d20,0x00000001a8e6b474) :00000001011521D0 System::Internal::Excutils::SignalConverter(NativeUInt, NativeUInt, NativeUInt) :000000010184DF50 DispatchToImport Fgx.Listmenu.Ios.TfgiOSListMenuItem.SetIconImage(System.DelphiInterface<Ios.Api.Uikit.UIImage>)(0x00000003839c06d0,0x000000028278b560) Fgx.Listmenu.Ios.TfgiOSListMenuItem.Bind(Fgx.Listmenu.TfgCustomListMenu*, int)(0x00000003839c06d0,0x00000002051aac20,0) Fgx.Listmenu.Ios.TfgiOSListMenuDataSource.collectionViewCellForItemAtIndexPath(System.DelphiInterface<Ios.Api.Uikit.UICollectionView>, System.DelphiInterface<Ios.Api.Foundation.NSIndexPath>)(0x00000003837b1b00,0x0000000282789b80,0x000000028278b080) 6) Тесткейс прилагаю Спасибо crashiosmenu.zip
  2. А Вас андроид или Иос интересует? Общее решение, думаю, будет не скоро.
  3. Если использовать TAVPlayer и Sex Pistols, то работает. procedure TFormMain.PlaySound(const AAssetName: TfgAssetName); var Asset: TfgAssetFile; ErrorPtr: Pointer; FName:string; Session: AVAudioSession; begin if TfgAssetsManager.Current.Find<TfgAssetFile>(AAssetName, Asset) then begin FName:=Asset.FileName; FAudioPlayer := TAVPlayer.Create; FAudioPlayer := TAVPlayer.Wrap(FAudioPlayer.initWithURL(TNSURL.OCClass.fileURLWithPath(StrToNSStr(FName)))); Session := TAVAudioSession.OCClass.sharedInstance; Session.setCategory(AVAudioSessionCategoryPlayback, @ErrorPtr); Session.setActive(True,@ErrorPtr); FAudioPlayer.play; end else raise Exception.CreateFmt('Cannot play sound. Asset is not available: assetName="%s"', [AAssetName]); end; testIosSound.zip
  4. Однако, я тоже попробовал, кстати на FMX тоже не работает, может это SDK(13.5) или особенности трансляции хедеров? Хотя демка на свифте заработала
  5. Ну, если под ios, я вообще не думаю, что это получится. Под андроид, имхо, проще, посмотрите , я там кидал что-то
  6. Прикрепить можно через opendialog
  7. Здравствуйте. В IOS в приватную папочку ? А где я могу такое указать? Не нахожу.
  8. Здравствуйте, проверял возможность распаковки файла из ресурсов с последующим доступом к нему. Для этого создал файл с расширением ini путь распаковки private К сожалению стек могу привести только в таком виде, дельфи отказывается копировать в буфер. Module Load: dyld. No Debug Info. Base Address: $0000000102F1C000. Process testAssets (2881) Module Load: testAssets. Has Debug Info. Base Address: $00000001011B4000. Process testAssets (2881) First chance exception at $0000000101786B7C. Exception class EDirectoryNotFoundException with message 'The specified path was not found'. Process testAssets (2881) Ipad Mini4 IOS 14.2 Delphi 10.3.3 Спасибо testAssets.zip
  9. Интересно, будет 1.8 под ёлочку?
  10. Доброе утро Внезапная ошибка в демо примере AndroidShareImageDemo [DCC Error] FGX.Share.pas(70): E2250 There is no overloaded version of 'putExtra' that can be called with these arguments { TfgShareManager } procedure TfgShareManager.AddBitmap; var ArrayList: JArrayList; begin if FDataTypes = [TfgDataType.Image] then FIntent.putExtra(TJIntent.EXTRA_STREAM, TJParcelable.Wrap(FBitmapUri)) //Вот тут else begin ArrayList := TJArrayList.Create; ArrayList.add(FBitmapUri); FIntent.putParcelableArrayListExtra(TJIntent.EXTRA_STREAM, ArrayList); end; end; А все потому, что Android.Api.ActivityAndView; v.1.7.0.0 function putExtra(const AArg0: JString; const AArg1: IJavaArray<Boolean>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<Byte>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: JString): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: JCharSequence): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<Double>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<JString>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<JCharSequence>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: JBundle): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<Single>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<ShortInt>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<Char>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<Integer>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<Int64>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Byte): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Boolean): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Char): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: ShortInt): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Double): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Single): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Int64): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Integer): JIntent; overload; v.1.6.3.0 function putExtra(const AArg0: JString; const AArg1: IJavaArray<Boolean>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<Byte>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: JString): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<JParcelable>): JIntent; overload; //И вот его очень не хватает function putExtra(const AArg0: JString; const AArg1: JCharSequence): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: JParcelable): JIntent; overload; //Вот его очень не хватает function putExtra(const AArg0: JString; const AArg1: IJavaArray<Double>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<JString>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<JCharSequence>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: JBundle): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<Single>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<ShortInt>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<Char>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<Integer>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: IJavaArray<Int64>): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Byte): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Boolean): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Char): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: ShortInt): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Double): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Single): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Int64): JIntent; overload; function putExtra(const AArg0: JString; const AArg1: Integer): JIntent; overload;
  11. Как говорила овечка в мультике про бобров "Спасибо вам большое, большое вам спасибо, спасибо вам большое, большое вам спасибо"
  12. Ярослав, посмотрите пожалуйста, если не добавить "setBackgroundImage(nil,0)" то цвет присвоить невозможно. Спасибо.
  13. Ага, ну понятно TfgiOSButton(fgButton1.Handle.NativeControl).View.setBackgroundImage(nil,0); TfgiOSButton(fgButton1.Handle.NativeControl).View.layer.setMasksToBounds(true); TfgiOSButton(fgButton1.Handle.NativeControl).View.layer.setCornerRadius(8); TfgiOSButton(fgButton1.Handle.NativeControl).View.layer.setBorderWidth(1); TfgiOSButton(fgButton1.Handle.NativeControl).View.layer.setBorderColor(TUIColor.OCClass.redColor.CGColor); TfgiOSButton(fgButton1.Handle.NativeControl).View.layer.setBackgroundColor(TUIColor.OCClass.redColor.CGColor);
  14. Здравствуйте. Извольте. С темой ознакомился, демо проект прилагаю. Стек-трейс, увы не могу, сделал глупость, обновившись на 14.2 Возможность дебага пропала. testbackground.zip
  15. Добрый день, не смог задать BackgroundName для Кнопки. Apple Ipad mini 4 IOS version 14.2 Delphi 10.3.3
  16. var FAnnotation:MKPointAnnotation; coord:CLLocationCoordinate2D; begin FAnnotation:=TMKPointAnnotation.Wrap(TMKPointAnnotation.Alloc.init); coord.latitude:=50.5; coord.longitude:=30.5; FAnnotation.setCoordinate(coord); FAnnotation.setTitle(StrToNSStr('Test')); TfgiOSMap(fgMap1.Handle.NativeControl).View.addAnnotation( NSObjectToID(FAnnotation)); end; Ну, маркер добавился.
  17. Извините. Дельфи 10,3,2 Ipad mini 4 Ios 14.2 CollectionView Событие OnTapItem не срабатывает
  18. Ярослав. OnTapItem В упор не отрабатывает, но первый живой (новогодний) проект запустился
  19. В загранпаспорте существует английская и национальная транскрипция имени
  20. Добрый вечер, недавно получил аккаунт разработчика. Честно говоря, не знаю, интересно ли это кому-то , но на всякий случай расскажу, что я делал Для регистрации нам понадобится 1) AppleId (как можно старее) 2) Загранпаспорт (как можно новее) 3) Абсолютно валидная, непросроченная карточка, идеально если имя на карточке будет совпадать с именем в загранпаспорте 4) 100 баксов на карточке, о которых не знает Ваша жена 5) Слабое знание английского или гугл-транслейт Теперь мои шаги. (Часть требований я домыслил исходя из своих трудностей) 1) Заходите на сайт разработчика Apple, и регистрируетесь как разработчик. а) Очень важно вбивать свои анкетные данные как указано в вашем загранпаспорте б) вбиваете реквизиты своей платежной карточки. Данные должны совпадать максимально точно. 2) Подтверждаете отправку и ждете (я ждал неделю) а) За это время вам должно прийти подтверждение регистрации, письмо о списании денег, и приглашение на разработку, дальше можно не читать. Вы победили. б) Вам ничего не пришло. Это мой случай . б1) Обращайтесь в службу поддержки, пишите совершенно вежливо, там живые люди, Вам предложат отослать скрин своего загранпаспорта. Сделайте это. Форма отсылки будет в ответе техподдержки б21) Ваши документы успешно подтверждены , тогда пункт 2а б22) Ваш запрос был передан в вышестоящие инстанции, вам ответят, приготовьтесь к ожиданию. б221) К вам обратится вышестоящий сотрудник, и попросит подождать, ответьте ему спасибой по английски, там живые люди, вежливость ценят. На этом мой квест был закончен. Я получил аккаунт разработчика. Буду рад, если моя информация была кому-то полезна. Спасибо
  21. If you do it "manually" you code to be work on Android and IOS.
  22. 1. Place fglayout1 relative 2 place fgpage control inside layout1 relative flexgrow=1 3 place fglayout2 inside layout1 absolute with anchor left right bottom 3 place 3 circle inside fglayout2 relative 4 change circle background when active tabsheet changing
  23. Здравствуйте, на всякий случай выкладываю исправленную версию диалогов Работает на 10.4 (проверял вроде) Просьба объявляйте переменную как интерфейс, и не забывайте присваивать nil по ненужности. Спасибо OpenDialog.7z
  24. Очень хорошо, когда примерно ожидать?
×
×
  • Create New...