Перейти к содержанию
Fire Monkey от А до Я

Евгений Корепов

Пользователи
  • Постов

    738
  • Зарегистрирован

  • Посещение

  • Победитель дней

    100

Активность репутации

  1. Like
    Евгений Корепов получил реакцию от Barbanel в Проверка наличия прав   
    Вам удалось решить проблему для камеры? Перелопатил весь интернет, но похоже Эмба не озаботилась этим вопросом. 
    Пока присобачил костыль из говна и палок - в AppEvent определяю что приложение стало не активным TApplicationEvent.WillBecomeInactive, значит вылез диалог спрашивания разрешений, После этого по событию TApplicationEvent.BecameActive (диалог завершен), проверяю что приходит от камеры в FCamera.OnSampleBufferReady - если черный-черный ничего, то можно подумать что разрешение не было дано )))))))) От этого костыля у меня кровь из глаз....
  2. Like
    Евгений Корепов отреагировална Сергей Сергеев в TWebBrowser показывает две клавиатуры в IOS   
    Все  заработало - огромное спасибо Евгению за активное участие в решении "мировой" проблемы!
  3. Like
    Евгений Корепов получил реакцию от Сергей Сергеев в TWebBrowser показывает две клавиатуры в IOS   
    Там видимо все контролы ControlType Platform подвержены этому глюку. А Браузер  - это нативный контрол по умолчанию.
  4. Like
    Евгений Корепов получил реакцию от Сергей Сергеев в TWebBrowser показывает две клавиатуры в IOS   
    Я в своем сообщении указал способ решения:
    https://quality.embarcadero.com/browse/RSP-25523
    Там Dave Nottage написал причину и способ исправления:

    Прикладываю архив с исправленным FMX.Platform.iOS.pas - положите в папку с проектом и все заработает нормально (я проверил).
    P.S. Несчастный FMX.Platform.iOS.pas изуродовали в Рио бесчеловечно )) Какой то индус прошелся по нему в наркотическом угаре.
    FMX.Platform.iOS.pas.7z
  5. Like
    Евгений Корепов получил реакцию от qz5 в TWebBrowser показывает две клавиатуры в IOS   
    Я в своем сообщении указал способ решения:
    https://quality.embarcadero.com/browse/RSP-25523
    Там Dave Nottage написал причину и способ исправления:

    Прикладываю архив с исправленным FMX.Platform.iOS.pas - положите в папку с проектом и все заработает нормально (я проверил).
    P.S. Несчастный FMX.Platform.iOS.pas изуродовали в Рио бесчеловечно )) Какой то индус прошелся по нему в наркотическом угаре.
    FMX.Platform.iOS.pas.7z
  6. Like
    Евгений Корепов получил реакцию от Ingalime в TWebBrowser показывает две клавиатуры в IOS   
    Да, легко удалось воспроизвести проблему - набрал yandex.ru, нажал Go (открылась страница), на странице нажал ссылку "Картинки" - появилась клавиатура, которая не получает фокуса, не реагирует на тыканье.
    Среда 10.3.2, iPhone SE, iOS 12.3.1
    Возможно проблема перекликается с https://quality.embarcadero.com/browse/RSP-25523

  7. Like
    Евгений Корепов получил реакцию от Сергей Сергеев в TWebBrowser показывает две клавиатуры в IOS   
    Да, легко удалось воспроизвести проблему - набрал yandex.ru, нажал Go (открылась страница), на странице нажал ссылку "Картинки" - появилась клавиатура, которая не получает фокуса, не реагирует на тыканье.
    Среда 10.3.2, iPhone SE, iOS 12.3.1
    Возможно проблема перекликается с https://quality.embarcadero.com/browse/RSP-25523

  8. Like
    Евгений Корепов получил реакцию от Сергей Сергеев в TWebBrowser показывает две клавиатуры в IOS   
    Закиньте сюда тестовый проект, я проверю на своем устройстве.
  9. Like
    Евгений Корепов отреагировална qz5 в Как можно обновиться в Google Play после 1 августа   
    Короче уточнил: бета-версия 10.3.3 будет называться Sugarloaf, она выйдет до конца этого месяца, там будет 64-битный компилятор под Андроид, но так и не понял по поводу - дадут ли "коммунякам" или нет
    так в ближайшие 7 дней ждем Sugarloaf
  10. Like
    Евгений Корепов отреагировална Татьяна в Андроид 9 и Интернет   
    Выражаю Евгению Корепову благодарность за высокопрофессиональную помощь!
  11. Like
    Евгений Корепов получил реакцию от Ingalime в Андроид 9 и Интернет   
    На будущее - при создании темы указывайте все исходные данные (как минимум вашу версию среды), что бы люди не давали вам советы, а потом уже узнали советы для какой версии среды они вам нужны.
    Я поставил Берлин и попробовал - ничего не получилось, результат такой же как у вас. Разбираться времени нет.
    Вот вам варианты:
    1. Постарайтесь избавится от http и перейти на https. В наше время почти не возможно найти сайт http, даже самые отсталые  госслужбы перешли на https на своих порталах. Если это ваш сервер, то я могу проконсультировать по способам перевода его на https.
    2. Перейдите на Delphi 10.3.2.
    3. Сделайте на каком нибудь другом сервере прокладку между запросами приложения по https и запросами к вашему серверу по http.
     
  12. Thanks
    Евгений Корепов получил реакцию от Мирзали Пирмагомедов в FMX ListView, вывод и чтение данных списка   
    Все тоже самое что и VLC, только чуток по другому:
    procedure TForm1.FillListView; var AItem : TListViewItem; begin AItem :=Listview.Items.Add; AItem.Data['Text1']:='Яблоки';//товар AItem.Data['Cost']:=100;//цена AItem :=Listview.Items.Add; AItem.Data['Text1']:='Груши';//товар AItem.Data['Cost']:=120;//цена AItem :=Listview.Items.Add; AItem.Data['Text1']:='Дыни';//товар AItem.Data['Cost']:=80;//ценаend; end; procedure TForm1.ProcessingListView; var I : Integer; AItem : TListViewItem; ASum : Currency; begin ASum:=0; for I := 0 to ListView.Items.Count - 1 do begin AItem:=(ListView.Items.Item[I] as TListViewItem); ASum:=ASum + AItem.Data['Cost'].AsCurrency; end; Label1.Text:=CurrToStr(ASum); end; Обратите внимание - цену присваиваем как число, а не как строку (не за чем лишние преобразования делать)
    AItem.Data['Cost']:=120;//цена
    Вторую процедуру можно было без AItem : TListViewItem; сделать, но для наглядности я сделал именно так.
  13. Like
    Евгений Корепов получил реакцию от qz5 в FMX ListView, вывод и чтение данных списка   
    Все тоже самое что и VLC, только чуток по другому:
    procedure TForm1.FillListView; var AItem : TListViewItem; begin AItem :=Listview.Items.Add; AItem.Data['Text1']:='Яблоки';//товар AItem.Data['Cost']:=100;//цена AItem :=Listview.Items.Add; AItem.Data['Text1']:='Груши';//товар AItem.Data['Cost']:=120;//цена AItem :=Listview.Items.Add; AItem.Data['Text1']:='Дыни';//товар AItem.Data['Cost']:=80;//ценаend; end; procedure TForm1.ProcessingListView; var I : Integer; AItem : TListViewItem; ASum : Currency; begin ASum:=0; for I := 0 to ListView.Items.Count - 1 do begin AItem:=(ListView.Items.Item[I] as TListViewItem); ASum:=ASum + AItem.Data['Cost'].AsCurrency; end; Label1.Text:=CurrToStr(ASum); end; Обратите внимание - цену присваиваем как число, а не как строку (не за чем лишние преобразования делать)
    AItem.Data['Cost']:=120;//цена
    Вторую процедуру можно было без AItem : TListViewItem; сделать, но для наглядности я сделал именно так.
  14. Like
    Евгений Корепов получил реакцию от Ingalime в TListView: список в виде CheckBox в ListViewItem   
    Если именно как на приведенной вами картинке то вот так:
    Делаете ListView с DynamicAppearance, включаете DesingMode, добавляете необходимые поля, включая TListItemAccessory с AccessoryType=Checkmark (он и будет отображать красивые галочки). Не забудьте дать названия добавленным элементам. В моем коде TListItemAccessory называется "ShowPool"
    P.S. Вариант, предложенный выше, с ListView1.EditMode := True будет выглядеть страшненько, чекбоксы не очень хорошо смотрятся в интерфейсе приложений.
    procedure TFormMain.FillSettingPools; Var I : Integer; AItem : TListViewItem; begin ListViewPools.BeginUpdate; ListViewPools.Items.Clear; for I := 0 to FPoolList.Count-1 do begin AItem:=ListViewPools.Items.Add; AItem.Data['CoinName']:=FPoolList.Items[I].CoinName; AItem.Data['CoinDetail']:=FPoolList.Items[I].Href; AItem.Data['ShowPool']:=FPoolList.Items[I].ShowPool; TListItemAccessory(AItem.View.FindDrawable('ShowPool')).Visible:=FPoolList.Items[I].ShowPool; //Boolean end; ListViewPools.EndUpdate; end; procedure TFormMain.ListViewPoolsUpdateObjects(const Sender: TObject; const AItem: TListViewItem); Var AItemAccessory : TListItemAccessory; begin AItemAccessory:=TListItemAccessory(AItem.View.FindDrawable('ShowPool')); if AItem.Data['ShowPool'].AsBoolean then AItemAccessory.Visible:=True Else AItemAccessory.Visible:=False; end; procedure TFormMain.ListViewPoolsItemClick(const Sender: TObject; const AItem: TListViewItem); Var I : Integer; S : String; AListItemAccessory : TListItemAccessory; APool : TPool; AShowPool : Boolean; begin AListItemAccessory:=TListItemAccessory(AItem.View.FindDrawable('ShowPool')); if AListItemAccessory<>nil then begin AShowPool:=AItem.Data['ShowPool'].AsBoolean; AShowPool:=Not AShowPool; AListItemAccessory.Visible:=AShowPool; AItem.Data['ShowPool']:=AShowPool; S:=AItem.Data['CoinName'].AsString; for I := 0 to FPoolList.Count-1 do begin If FPoolList.Items[I].CoinName.Equals(S) Then begin APool:=FPoolList.Items[I]; APool.ShowPool:=AShowPool; FPoolList.Items[I]:=APool; Break; end; end; end; FillListViewPoolsMaster; SavePools; end;  
  15. Like
    Евгений Корепов отреагировална Сергей Сергеев в Личный кабинет пациента поликлиники   
    сделано на Datasnap - 3х звенка
    MsSql- Сервис Https - Клиент ( Андроид, Ios, Win, Mac)
     
    Личный кабинет пациента клиники (www.familydoctor.ru) открывает зарегистрированным пользователям доступ
    к медицинской карте (результаты лабораторных исследований и функциональной диагностики,
    описание приемов врачей, направления и рекомендации,
    истории посещений клиники (дата, время, специалист),
    программам медицинского наблюдения (перечень, период прикрепления),
    информации о движении средств по депозитам.

    Для пересылки выписок (файлов) из медицинской карты используется электронная почта (в системе должен быть настроенный Майл Агент на отправку почты).
    Полной версией приложения могут воспользоваться только пациенты, подключившие услугу "Личный кабинет" в регистратуре любого корпуса клиники "Семейный доктор".
    В новой версии изменен дизайн, появились новые функции и разделы:
    вход по номеру медкарты или ФИО;
    запрос нового пароля;
    заявка на онлайн запись;
    отмена приема;
    прейскурант услуг клиники;
    справочник адресов клиники.
    сервис оплаты услуг клиники через приложение.
    В ближайшем будущем функционал личного кабинета будет дополнен онлайн расписанием специалистов, возможностью электронной записи на приём. 

     
    в гугл плее
     https://play.google.com/store/apps/details?id=com.familydoctor.FD
    Есть тестовый вход, обращайтесь. 
     
  16. Like
    Евгений Корепов получил реакцию от Vizit0r в Затирание bitmap canvas при map-unmap   
    Я разобрался в чем дело:
    Вместо TMapAccess.Write используйте TMapAccess.ReadWrite. 
    TMapAccess.Write по какой то причине затирает если не все, то некоторые последние изменения канваса. В доке http://docwiki.embarcadero.com/Libraries/Rio/en/FMX.Graphics.TBitmap.Map не нашел упоминания о таком поведении.
  17. Like
    Евгений Корепов получил реакцию от Ingalime в Андроид 9 и Интернет   
    Вы где то ошиблись. Или в левой кодировке сохранили файл, или еще что.
    На тестовом проекте добавил - все отлично собралось. Вот мой AndroidManifest.template.xml
    <?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="%package%" android:versionCode="%versionCode%" android:versionName="%versionName%" android:installLocation="%installLocation%"> <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> <%uses-permission%> <uses-feature android:glEsVersion="0x00020000" android:required="True"/> <application android:persistent="%persistent%" android:restoreAnyVersion="%restoreAnyVersion%" android:label="%label%" android:debuggable="%debuggable%" android:largeHeap="%largeHeap%" android:icon="%icon%" android:theme="%theme%" android:hardwareAccelerated="%hardwareAccelerated%" android:resizeableActivity="false" <!-- Вот сюда я добавил строчку --> android:usesCleartextTraffic="true"> <%provider%> <%application-meta-data%> <%uses-libraries%> <%services%> <!-- Our activity is a subclass of the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:launchMode="singleTask"> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="%libNameValue%" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <%activity%> <%receivers%> </application> </manifest> <!-- END_INCLUDE(manifest) -->  
  18. Like
    Евгений Корепов получил реакцию от dnekrasov в Затирание bitmap canvas при map-unmap   
    Я разобрался в чем дело:
    Вместо TMapAccess.Write используйте TMapAccess.ReadWrite. 
    TMapAccess.Write по какой то причине затирает если не все, то некоторые последние изменения канваса. В доке http://docwiki.embarcadero.com/Libraries/Rio/en/FMX.Graphics.TBitmap.Map не нашел упоминания о таком поведении.
  19. Like
    Евгений Корепов получил реакцию от Ingalime в Затирание bitmap canvas при map-unmap   
    Я разобрался в чем дело:
    Вместо TMapAccess.Write используйте TMapAccess.ReadWrite. 
    TMapAccess.Write по какой то причине затирает если не все, то некоторые последние изменения канваса. В доке http://docwiki.embarcadero.com/Libraries/Rio/en/FMX.Graphics.TBitmap.Map не нашел упоминания о таком поведении.
  20. Like
    Евгений Корепов получил реакцию от qz5 в Андроид 9 и Интернет   
    Вы где то ошиблись. Или в левой кодировке сохранили файл, или еще что.
    На тестовом проекте добавил - все отлично собралось. Вот мой AndroidManifest.template.xml
    <?xml version="1.0" encoding="utf-8"?> <!-- BEGIN_INCLUDE(manifest) --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="%package%" android:versionCode="%versionCode%" android:versionName="%versionName%" android:installLocation="%installLocation%"> <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> <%uses-permission%> <uses-feature android:glEsVersion="0x00020000" android:required="True"/> <application android:persistent="%persistent%" android:restoreAnyVersion="%restoreAnyVersion%" android:label="%label%" android:debuggable="%debuggable%" android:largeHeap="%largeHeap%" android:icon="%icon%" android:theme="%theme%" android:hardwareAccelerated="%hardwareAccelerated%" android:resizeableActivity="false" <!-- Вот сюда я добавил строчку --> android:usesCleartextTraffic="true"> <%provider%> <%application-meta-data%> <%uses-libraries%> <%services%> <!-- Our activity is a subclass of the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:launchMode="singleTask"> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="%libNameValue%" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <%activity%> <%receivers%> </application> </manifest> <!-- END_INCLUDE(manifest) -->  
  21. Like
    Евгений Корепов получил реакцию от qz5 в Затирание bitmap canvas при map-unmap   
    К сожалению начиная с Токио, Эмбаркадера почти полностью поломала TBitmap. Его поведение стало неадекватным.
    Вместо сохранения можете делать
    var BitmapSurface : TBitmapSurface; ... BitmapSurface:=TBitmapSurface.Create; BitmapSurface.Assign(Image1.Bitmap); BitmapSurface.Free; Эта манипуляция в процедуре сохранения, как раз и помогает от затирания канваса. Почему это работает я не понял.
    Не забывайте так же проверять удалось ли заблокировать канвас.
    Вот я накидал пример:
    procedure TForm1.Button1Click(Sender: TObject); var Bitmap : Tbitmap; BitmapData : TBitmapData; I: integer; J: integer; Distance: integer; Surf: TBitmapSurface; begin Bitmap := Tbitmap.Create; Bitmap.CreateFromFile('D:\2012643.jpg'); if Bitmap.Canvas.BeginScene then try Bitmap.Canvas.Stroke.Color := TAlphaColorRec.Blue; Bitmap.Canvas.DrawEllipse(TRectF.Create(10, 10, 20, 20), 1); finally Bitmap.Canvas.EndScene; end; Surf:=TBitmapSurface.Create; Surf.Assign(Bitmap); Surf.Free; if Bitmap.Map(TMapAccess.Write, BitmapData) then try Distance:=10; for I := 0 to Round(BitmapData.Width / Distance) - 1 do for J := 0 to Bitmap.Height - 1 do begin begin AlphaColorToPixel(TAlphaColorRec.Red, @PAlphaColorArray(BitmapData.Data) [J * (BitmapData.Pitch div PixelFormatBytes[Bitmap.PixelFormat]) + Distance * I], Bitmap.PixelFormat); end; end; finally Bitmap.Unmap(BitmapData); end; Image1.Bitmap.Assign(Bitmap); end;  
  22. Like
    Евгений Корепов получил реакцию от Ingalime в Затирание bitmap canvas при map-unmap   
    К сожалению начиная с Токио, Эмбаркадера почти полностью поломала TBitmap. Его поведение стало неадекватным.
    Вместо сохранения можете делать
    var BitmapSurface : TBitmapSurface; ... BitmapSurface:=TBitmapSurface.Create; BitmapSurface.Assign(Image1.Bitmap); BitmapSurface.Free; Эта манипуляция в процедуре сохранения, как раз и помогает от затирания канваса. Почему это работает я не понял.
    Не забывайте так же проверять удалось ли заблокировать канвас.
    Вот я накидал пример:
    procedure TForm1.Button1Click(Sender: TObject); var Bitmap : Tbitmap; BitmapData : TBitmapData; I: integer; J: integer; Distance: integer; Surf: TBitmapSurface; begin Bitmap := Tbitmap.Create; Bitmap.CreateFromFile('D:\2012643.jpg'); if Bitmap.Canvas.BeginScene then try Bitmap.Canvas.Stroke.Color := TAlphaColorRec.Blue; Bitmap.Canvas.DrawEllipse(TRectF.Create(10, 10, 20, 20), 1); finally Bitmap.Canvas.EndScene; end; Surf:=TBitmapSurface.Create; Surf.Assign(Bitmap); Surf.Free; if Bitmap.Map(TMapAccess.Write, BitmapData) then try Distance:=10; for I := 0 to Round(BitmapData.Width / Distance) - 1 do for J := 0 to Bitmap.Height - 1 do begin begin AlphaColorToPixel(TAlphaColorRec.Red, @PAlphaColorArray(BitmapData.Data) [J * (BitmapData.Pitch div PixelFormatBytes[Bitmap.PixelFormat]) + Distance * I], Bitmap.PixelFormat); end; end; finally Bitmap.Unmap(BitmapData); end; Image1.Bitmap.Assign(Bitmap); end;  
  23. Like
    Евгений Корепов отреагировална Татьяна в Андроид 9 и Интернет   
    Куча советов там.
    Достаточно дописать в манифест:
    android:usesCleartextTraffic="true" ?
  24. Thanks
    Евгений Корепов получил реакцию от Татьяна в Андроид 9 и Интернет   
    Вот тут рецепт, в манифест добавьте поля, https://stackoverflow.com/questions/51902629/how-to-allow-all-network-connection-types-http-and-https-in-android-9-pie
  25. Like
    Евгений Корепов получил реакцию от Ingalime в Андроид 9 и Интернет   
    Вот тут рецепт, в манифест добавьте поля, https://stackoverflow.com/questions/51902629/how-to-allow-all-network-connection-types-http-and-https-in-android-9-pie
×
×
  • Создать...