Перейти к содержанию

Anatoliy

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

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

  • Посещение


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

  1. Like
    Anatoliy выдал репутацию Алексей Данильченко в Отправка файлов через намерение   
    Может кому пригодится. вот решение.
    procedure TfrmSendEmail.SendEmail(); {$IF DEFINED(ANDROID)} var lIntent: JIntent; lJRecipient: TJavaObjectArray<JString>; lURI: Jnet_Uri; lJFile: JFile; lFileName: string; lFilePath: string; {$ENDIF} begin {$IF DEFINED(ANDROID)} lJRecipient:= TJavaObjectArray<JString>.Create(1); lJRecipient.Items[0]:= StringToJString(eEmail.Text); lFileName:= AttachFileName; lFilePath:= System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetSharedDownloadsPath, lFileName); lIntent:= TJIntent.Create; lIntent.setType(StringToJString('application/excel')); lIntent.setAction(TJIntent.JavaClass.ACTION_SEND); lIntent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); lIntent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, lJRecipient); lIntent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(eSubject.Text)); lIntent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(mEmailMessage.Text)); lJFile:= TJFile.JavaClass.init(StringToJString(lFilePath)); lURI:= TAndroidHelper.JFileToJURI(lJFile); lIntent.setData(lURI); lIntent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, TJParcelable.Wrap((lURI as ILocalObject).GetObjectID)); TAndroidHelper.Activity.startActivity(lIntent); {$ENDIF}  
  2. Thanks
    Anatoliy выдал репутацию Alialioglu2016 в Application Loader   
    Загрузчик приложений больше не используется на новой Mac OS X. Для этого вы должны использовать приложение Transporter.
    Transporter
  3. Like
    Anatoliy выдал репутацию gonzales в Пуши в IOS   
    Так а в чем конкретно проблема?
    В коде есть OnReceiveNotificationEvent - вызывается когда придет пуш. Соответственно вместо ShowMessage(aText); пишите вызов новой формы. Если она уже создана, то просто FormB.visible:=true;, если не создана, то вызов конструктора, (примерно так FormB:=TForm.Create;, соответственно конструктор должен быть описан) 
  4. Like
    Anatoliy выдал репутацию Brovin Yaroslav в [Статья] Делаем скриншот любого контрола FireMonkey   
    Ссылка: http://yaroslavbrovin.ru/category/fmx_ru/graphics_ru/ Автор: Ярослав Бровин Статья рассказывает о том, как сделать скриншот любого контрола FireMonkey. Так же немного расскрывает общий процесс отрисовки компонентов.
  5. Like
    Anatoliy выдал репутацию Равиль Зарипов (ZuBy) в CloudFlare [IPV6]   
    Доброго времени суток!
    Для тех, кто не может опубликовать приложение в AppStore
    Если приложение посылает запросы на сервер и у Вас на сервере нет поддержки IPV6, Apple не опубликует приложение!
    Что нужно для успешной публикации:
    Получить у Вашего хостера IPV6 адрес (примерно такой вид имеет ipv6 адрес)  2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d  
    Если нет root-доступа к серверу, то можно воспользоваться сервисом https://cloudflare.com Если есть root-доступ, то ознакомьтесь с инструкцией Мы рассмотрим самый частый вариант, без root-доступа, через сервис CloudFlare
    Не буду расписывать регистрацию, там все просто Нажимаем +Add Site, вписываем адрес Вашего сайта (домен), как только система проверит конфигурацию Вашего текущего DNS, она предложит изменить NS-сервера В кабинете хостера Вам нужно будет сменить NS-сервара, на те которые выдал CloudFlare  В CloudFlare -> раздел DNS Нужно будет дописать запись типа AAAA с Вашим ipv6 адресом  Все поддомены которые есть также прописать через запись типа CNAME  Чтобы работало FTP нужно отключить HTTP Proxy (CDN)  Теперь FTP протокол будет доступен по IPv4, не по домену Ждём обновления DNS и проверяем правильность конфигурации
    Результат примерно такой должен быть

    Что нужно сделать в Delphi / C++:
    Выкидываем TidHTTP (Indy) и переписываем на TNetHTTPClient Приложу пример запроса и обработки ответов, учтен баг с получением контента на IOS
    TmyAPI.zip или https://github.com/rzaripov1990/FMX.HTTP.Request
  6. Like
    Anatoliy выдал репутацию FAN в Amazon и Delphi   
    Видео - Amazon Web Services Programming

     
    Статья: Один год бесплатного облачного хостинга
    https://klen.github.io/aws.html
     
     
  7. Thanks
    Anatoliy выдал репутацию slav_z в Срабатывает OnClick на ListBox при скроллинге   
    OnTap лучше не используйте, я бы сделал на обычный OnClick... перед вызовом действий, связанных с элементами списка (ваши ShowMessage 1,  ShowMessage 2 ), просто проверьте "а не прокручивается ли сейчас listbox (scrollbox)" с помощью ListBox.AniCalculations.Moved...
  8. Like
    Anatoliy выдал репутацию Eric Myval в Unable to create process   
    Результат следующий 
    Мой проект корректно работает под
    1) Windows 32/64
    2) Android 32/64
    3) iOS 32/64 (обязательно настроить сертификаты, которые можно создать и прикрепить в Xcode + настроить их в Rad Studio в разделе Project-Deployment-Provisioning, выбрать там ключи как вы их настроили на вашем маке + ОБЯЗАТЕЛЬНО в version info удалить текст в CFBundleIdentifier, должно быть пусто)
    4) MacOS 32/64 
    5) iOS 32/64 simulator - не работает!!!
  9. Like
    Anatoliy выдал репутацию Brovin Yaroslav в [FGX Native] В ожидании релиза до Нового 2020 Года   
    Всем добрый вечер,
    Вот и прошло лето, а вместе с этим подходит к концу закрытое бета тестирование библиотеки FGX Native. Проделана огромная работа, как в разработке самой библиотеки, так и в разработке нового портала.
    Плодотворная работа во время бета тестирования принесла свои плоды. В результате:
    Были разработаны несколько новых интересных мобильных проектов:  🎼 Аналог сервиса распознавания музыки Shazam на Delphi и FGX Native! 📈 Температурный дневник. Фиксация температуры, приема лекарств, построение графиков и рекомендации о приеме лекарств. 💼 Электронный конспект лекций по теме "Слесарное дело" с функциями самопроверки. 💊 Домашняя аптечка. 📱 Большой проект с демонстрацией возможностей библиотеки. Добавлены новые возможности и компоненты. Повышена стабильность работы библиотеки. И многое другое. Я рад с вами поделиться отличной новостью, которую многие с нетерпением ждали. До нового года запланирован 🔥 релиз библиотеки FGX Native 🔥 под Андроид, который будет доступен для РФ и стран СНГ:
    Разработка кроссплатформенных приложений под Андроид 🤖. Русскоязычная документация. Набор демонстрационных проектов. Более 40 готовых компонентов. Свой дизайнер форм. В течении следующих двух недель будет опубликована ссылка на сайт, посвященный библиотеке FGX Native. На нем вы сможете найти: описание возможностей, документацию, тарифы и многое другое - всё это поможет вам предварительно оценить возможности библиотеки для реализации своих проектов. 
    Позже, ближе к новому году, будет выложена Trial сборка библиотеки и открыта продажа.
    Если у вас есть какие-либо вопросы - задавайте.
    Всем отличной рабочей недели! 🚀🚀🚀
    P.S. 
      - Релиз под iOS запланирован на весну/лето 2020 года.
      - Релиз для других стран будет позже, после локализации документации.





  10. Like
    Anatoliy выдал репутацию Andrey Efimov в [Статья][Android] Серия статей на тему Uses Permissions   
    Обновлена серия статей на тему использования Uses Permissions.
    Uses Permissions: Теория Uses Permissions: Добавляем метод onRequestPermissionsResult в приложение (для Delphi 10.1/10.2) Uses Permissions: Практика (для Delphi 10.3) Автор: Андрей Ефимов
  11. Like
    Anatoliy выдал репутацию krapotkin в Фреймворк для стандартного ListView   
    P.S.
    по факту использования мне показалось, что удобнее использовать не отдельный JSON файл, а прямо в коде константой задавать JSON строкой.
    (Видимо сказались приключения с деплоем)))
  12. Like
    Anatoliy выдал репутацию Tumaso в Долгая реакция переключения вкладок   
    Попробуй при создании приложения единоразово вызвать процедуру PreloadContent(TabControl2), где PreloadContent определена следующим образом:
    procedure PreloadContent(const AControl: TControl); {$IF DEFINED(ANDROID) or DEFINED(IOS)} var I: Integer; {$ENDIF} begin {$IF DEFINED(ANDROID) or DEFINED(IOS)} if AControl is TStyledControl then TStyledControl(AControl).ApplyStyleLookup; if AControl.ControlsCount > 0 then for I := 0 to AControl.ControlsCount - 1 do PreloadContent(AControl.Controls[I]); {$ENDIF} end;  
  13. Like
    Anatoliy выдал репутацию Tumaso в firemonkey android otg camera   
    а этот микроскоп определяется андроидом как стандартная камера? если да, то задача несложная. В rio вообще всё из коробки, в berlin нужен дополнительный модуль запроса разрешений (для андроид 6+), а с камерой можно работать из коробки
  14. Like
    Anatoliy выдал репутацию Maka в переход к x64?   
    Отвечают долго, 10-14 дней, а потом еще около 7 дней переписка, проверки и ожидание решения. Наберитесь терпения
  15. Like
    Anatoliy выдал репутацию krapotkin в Загрузка настроек приложения из БД   
    правильный ответ - не делать так ))
    нужно хранить настройки приложения в отдельном классе
    тогда кроме самого класса нужны методы, которые 
    1) читают пишут его из ... файла, БД, интернета и т.д.
    2) в нужный момент (обычно чтобы изобразить форму и заполнить св-ва компонентов или еще для чего угодно) использовать эти настройки
    3) вытекает из 2) сохранять в нужный момент новые значения в переменную, где лежат настройки
    для хранения настроек отлично подходит JSON. Т.к. он может иметь иерархическую структуру, что очень удобно. Его и хранить в БД.
    Можно и прямо поля, строки и все такое, но все равно, собирать их нужно в некое хранилище в программе.
    Пример разбирал тут http://www.cyberforum.ru/blogs/469693/blog4883.html
  16. Like
    Anatoliy выдал репутацию Slym в Загрузка настроек приложения из БД   
    FDQuery1.Lookup?
    или RTTI
    c:=FindComponent(FDQuery1.Fields[1].AsString)
    if assigned(c)
      SetProp(c,FDQuery1.Fields[2].AsString,TValue.From(FDQuery1.Fields[3].AsString))
     
  17. Like
    Anatoliy выдал репутацию Rusland в Invalid parameter при подключении таблицы   
    Кажется нашел я причину проблем с моим DataSnap проектом - при создании я поставил галочку HTTPS. 
    Сейчас пересоздал проект заново без HTTPS, все заработало.
    PS. Возможно просто нужно найти правильные ssleay32.dll и libeay32.dll
  18. Like
    Anatoliy выдал репутацию Евгений Корепов в Умный дом   
    К сожалению тема никакого отношения в Умному дому не имеет. В телеграмме я поднимал тему о реальных технологиях умного дома - датчиках (задымление, протечка, газ, открытие двери/окна, движение), протоколы и технологии соединения всего этого, к примеру ZigBee, ну и работа со всем этим хозяйством.
    Тема прикольная и интересная. Написал на delphi класс работы в ZigBee шлюзом, нормально опрашиваю все датчики, но запись реализовать не удалось из за отсутствия в delphi библиотек шифрования "из коробки". Наработок куча, но все они времен Delph 7 - абсолютно все используют короткие ANSI строки, и в современных версиях среды результат шифрования/дешифровки может быть какой угодно, но не правильный.
    Пока все что нужно по быстрому написал на php, там хоть с шифрованием порядок, не надо изобретать велосипед или адаптировать код двадцатилетней давности.
    Так что теперь могу включать/выключать свет с помощью умной розетки, включать светильник на основном хабе, выбирая яркость и палитру, но на php ))))
  19. Like
    Anatoliy выдал репутацию krapotkin в Фреймворк для стандартного ListView   
    еще один пример раскладки из реального проекта

    { "Columns":[], "Variables": [ {"Y_UNIT":"12"}, {"GAP":"8"}, {"ITEM_H":"2*GAP+5*Y_UNIT"}, {"IMG_H":"76"}, {"IMG_W":"76"}, {"STOCK_SIZE":"48"}, {"PRICE_COLW":"53"} ], "Objects": [ {"Name":"ID","Kind":"data"}, , {"Name":"img","Kind":"image", "Place":{"X":"0","Y":"0","W":"IMG_W","H":"IMG_H"}, } , {"Name":"Text","Kind":"text","TextHAlign":"leading","TextVAlign":"leading", "Place":{"X":"img.right","Y":"GAP","W":"itemwidth - IMG_W - GAP - 2*PRICE_COLW - GAP","H":"52"}, "WordWrap":true, "Color":"black", "Font":{"Size":12} } , {"Name":"earlier","Kind":"text","TextHAlign":"leading","TextVAlign":"leading", "Place":{"X":"text.left","Y":"ITEM_H-2*GAP+2","W":"itemwidth - 2*PRICE_COLW","H":"Y_UNIT"}, "WordWrap":false, "Color":"green", "Font":{"Size":10} } , {"Name":"price1","Kind":"text","TextHAlign":"trailing","TextVAlign":"trailing", "Place":{"X":"itemwidth-GAP-PRICE_COLW-W","Y":"GAP+2*Y_UNIT","W":"auto","H":"Y_UNIT*1.5", "priority":"WXYH"}, "WordWrap":false, "Color":"black", "Font":{"Size":15} } , {"Name":"imgstrike","Kind":"image", "Place":{"X":"price1.x-5","Y":"price1.y","W":"price1.w+8","H":"price1.h"}, } , {"Name":"price2","Kind":"text","TextHAlign":"trailing","TextVAlign":"trailing", "Place":{"X":"price1.right-W","Y":"ITEM_H-GAP-Y_UNIT*1.5","W":"auto","H":"Y_UNIT*1.5", "priority":"WXYH"}, "WordWrap":false, "Color":"black", "Font":{"Size":15, "style":"bold"} } , {"Name":"qty","Kind":"text","TextHAlign":"trailing","TextVAlign":"center", "Place":{"X":"itemwidth-PRICE_COLW-GAP","Y":"GAP","W":"PRICE_COLW","H":"2*Y_UNIT"}, "WordWrap":false, "Color":"black", "Font":{"Size":27, "style":"bold"} } , {"Name":"imgstock","Kind":"image", "Place":{"X":"itemwidth-STOCK_SIZE-3","Y":"ITEM_H-STOCK_SIZE-4","W":"STOCK_SIZE","H":"STOCK_SIZE"}, } ], "ItemHeight":"ITEM_H", "ItemSpaces": {"X":"0","Y":"0","W":"0","H":""}, "SideSpace":"0" }  
  20. Like
    Anatoliy выдал репутацию krapotkin в Удаление динамически созданных компонентов   
    Во-первых, откройте для себя фреймы ))
    Во-вторых убивать себя из обработчика себя нельзя, да и не нужно (см п.1)
    В качестве костыля.
    1. Создавайте все с Owner=NIL2.
    2. 
    TTask.Run(procedure begin   tthread.synchronize(nil, procedure begin     KILLTHEMALL(); end); end)  
  21. Like
    Anatoliy выдал репутацию qz5 в Не отрисовываются итемы при FetchOptions.Mode:=fmManual у DataSet'a   
    Короче нашел способ, чтобы добавлялись Item при LiveBinding! Потратил кучу времени. Вот так:
    FDQuery1.FetchNext; LinkFillControlToField1.Active := False; LinkFillControlToField1.Active := true; Но есть тогда другая проблема - ListView прокручивается на самый верх при добавлении новых строк.
    Решил это вот так:
    procedure TForm1.ListView1ScrollViewChange(Sender: TObject); var ItemHeight, p: single; begin p := ListView1.ScrollViewPos; ItemHeight := ListView1.ItemAppearance.ItemHeight; if ListView1.ScrollViewPos + ListView1.Height > ItemHeight * 0.8 * ListView1.ItemCount then begin FDQuery1.FetchNext; LinkFillControlToField1.Active := False; LinkFillControlToField1.Active := true; ListView1.ScrollViewPos := p; end; end; В принципе работает, надо только добавить условия, что все данные показаны и т.п., но наверное не буду я всё равно делать на биндингах.
    Хочу всё переделать назад на ручное добавление элементов. Подумаю как лучше будет работать.
  22. Like
    Anatoliy выдал репутацию mab в Не отрисовываются итемы при FetchOptions.Mode:=fmManual у DataSet'a   
    Доброго времени суток, коллеги.
    Столкнулся с проблемой неотрисовки итемов в ListView при выставлении свойства TFDQuery.FetchOptions.Mode := fmManual. Данные с TListView (и TGrid) связаны посредством LiveBindings. На скрине видно, что данные в принципе загружены в датасет и даже отображаются в TGrid, но не в Listview.

    Может кто сталкивался? Варианты пробовал разные, бьюсь 3-й день, но увы(
    До решения в общем додумался (но вышеуказанный способ не выходит из головы))): отлавливать событие, что список прокручен до упора и увеличивать свойство FetchOptions.RecsMax (при FetchOptions.Mode := скажем fmAll).
    Для чего нужно: открывать без задержек таблицы с большим количеством записей, не загружая их в датасет сразу все. fmOnDemand необходимого эффекта не дал - все равно загружаются все записи сразу. Хотя здесь (http://docwiki.embarcadero.com/Libraries/XE8/en/FireDAC.Stan.Option.TFDFetchOptions.Mode) о свойстве с этим значением написано обратное.
    PS. Delphi XE7 (XE8), БД SQLite. Проект в прицепе.
    33333.zip
  23. Like
    Anatoliy выдал репутацию DirtyBorov в Не отрисовываются итемы при FetchOptions.Mode:=fmManual у DataSet'a   
    Похоже FireDAC плохо дружит с LiveBinding. Я тоже напоролся на проблему - не обновляются данные. 
    Есть 3 три таблицы, связанных внешними ключами через Master/Detail, по цепочке 1>2>3. Если перейти по записям в первой таблице - во второй данные обновятся, а в третьей - нет. Обновляются только если нет связанных данных.
    Самое интересное то, что точно такой же проект, с теме же таблицами на VCL отлично работает. Из чего складывается вывод - косячит биндинг. Точнее TBindSourceDB.
  24. Like
    Anatoliy выдал репутацию alexei в Определение включена ли на устройстве возможность применять mock location   
    вот тебе методы обнаружения ложных gps с исходниками :https://github.com/smarques84/MockLocationDetector
  25. Like
    Anatoliy выдал репутацию qz5 в Модерация приложения в google play   
    Сейчас вроде три дня обещают модерировать
×
×
  • Создать...