Stas
Members-
Posts
536 -
Joined
-
Last visited
-
Days Won
75
Content Type
Profiles
Forums
Events
Store
Blogs
Everything posted by Stas
-
Спасибо, я буду стараться.
-
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
-
А Вас андроид или Иос интересует? Общее решение, думаю, будет не скоро.
-
Если использовать 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
-
Однако, я тоже попробовал, кстати на FMX тоже не работает, может это SDK(13.5) или особенности трансляции хедеров? Хотя демка на свифте заработала
-
Ну, если под ios, я вообще не думаю, что это получится. Под андроид, имхо, проще, посмотрите , я там кидал что-то
-
Прикрепить можно через opendialog
-
Здравствуйте. В IOS в приватную папочку ? А где я могу такое указать? Не нахожу.
-
Здравствуйте, проверял возможность распаковки файла из ресурсов с последующим доступом к нему. Для этого создал файл с расширением 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
-
Интересно, будет 1.8 под ёлочку?
-
Доброе утро Внезапная ошибка в демо примере 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;
-
Как говорила овечка в мультике про бобров "Спасибо вам большое, большое вам спасибо, спасибо вам большое, большое вам спасибо"
- 1 reply
-
- 4
-
Ярослав, посмотрите пожалуйста, если не добавить "setBackgroundImage(nil,0)" то цвет присвоить невозможно. Спасибо.
-
Ага, ну понятно 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.2 Возможность дебага пропала. testbackground.zip
-
Добрый день, не смог задать BackgroundName для Кнопки. Apple Ipad mini 4 IOS version 14.2 Delphi 10.3.3
-
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; Ну, маркер добавился.
-
Извините. Дельфи 10,3,2 Ipad mini 4 Ios 14.2 CollectionView Событие OnTapItem не срабатывает
-
Ярослав. OnTapItem В упор не отрабатывает, но первый живой (новогодний) проект запустился
-
В загранпаспорте существует английская и национальная транскрипция имени
-
Добрый вечер, недавно получил аккаунт разработчика. Честно говоря, не знаю, интересно ли это кому-то , но на всякий случай расскажу, что я делал Для регистрации нам понадобится 1) AppleId (как можно старее) 2) Загранпаспорт (как можно новее) 3) Абсолютно валидная, непросроченная карточка, идеально если имя на карточке будет совпадать с именем в загранпаспорте 4) 100 баксов на карточке, о которых не знает Ваша жена 5) Слабое знание английского или гугл-транслейт Теперь мои шаги. (Часть требований я домыслил исходя из своих трудностей) 1) Заходите на сайт разработчика Apple, и регистрируетесь как разработчик. а) Очень важно вбивать свои анкетные данные как указано в вашем загранпаспорте б) вбиваете реквизиты своей платежной карточки. Данные должны совпадать максимально точно. 2) Подтверждаете отправку и ждете (я ждал неделю) а) За это время вам должно прийти подтверждение регистрации, письмо о списании денег, и приглашение на разработку, дальше можно не читать. Вы победили. б) Вам ничего не пришло. Это мой случай . б1) Обращайтесь в службу поддержки, пишите совершенно вежливо, там живые люди, Вам предложат отослать скрин своего загранпаспорта. Сделайте это. Форма отсылки будет в ответе техподдержки б21) Ваши документы успешно подтверждены , тогда пункт 2а б22) Ваш запрос был передан в вышестоящие инстанции, вам ответят, приготовьтесь к ожиданию. б221) К вам обратится вышестоящий сотрудник, и попросит подождать, ответьте ему спасибой по английски, там живые люди, вежливость ценят. На этом мой квест был закончен. Я получил аккаунт разработчика. Буду рад, если моя информация была кому-то полезна. Спасибо
-
If you do it "manually" you code to be work on Android and IOS.
-
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
-
Здравствуйте, на всякий случай выкладываю исправленную версию диалогов Работает на 10.4 (проверял вроде) Просьба объявляйте переменную как интерфейс, и не забывайте присваивать nil по ненужности. Спасибо OpenDialog.7z
-
Очень хорошо, когда примерно ожидать?