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

Barbanel

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

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

  • Посещение

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

    36

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

  1. Like
    Barbanel получил реакцию от Anatoliy в Возможности Androidapi   
    Правильно.
    Насколько я знаю, не ко всему. Конкретный пример вспомнить не смогу, но некоторые вещи приходится тащить отдельно.
    Также, некоторые вещи проще написать на Java и потом импортировать эти библиотеки в FMX.
    Однако, бОльшая часть необходимых процедур апи - в наличии, этого вполне достаточно чтобы собрать полноценное приложение со средними я бы сказал запросами.
  2. Like
    Barbanel получил реакцию от d7d1cd в Возможности Androidapi   
    Правильно.
    Насколько я знаю, не ко всему. Конкретный пример вспомнить не смогу, но некоторые вещи приходится тащить отдельно.
    Также, некоторые вещи проще написать на Java и потом импортировать эти библиотеки в FMX.
    Однако, бОльшая часть необходимых процедур апи - в наличии, этого вполне достаточно чтобы собрать полноценное приложение со средними я бы сказал запросами.
  3. Like
    Barbanel отреагировална Alex7wrt в Реализовать рейтинг   
    Да все норм. Мне самому рисунок не очень понравился ))
    Рисовал его в ворде года два назад, когда хотел понять, как удобнее рисовать звезду. Когда понял, то рисунок уже не было смысла доводить до ума, так что таким он и остался.
    Но вот щас все-таки решил доделать. Исправил изображение )
  4. Like
    Barbanel отреагировална Alex7wrt в Реализовать рейтинг   
    Надеюсь, что в предыдущем посте помог ответить на первую часть вопроса.
    Если каждая звезда организована отдельным компонентом, то, соответственно, вы всегда можете узнать по какой звезде был клик и раскрасить все звезды до нее (включительно) в желтый цвет.
    Ниже скинул программку для герерации TPathData звезды, может пригодится
    star generator.zip
    Можно использовать генерируемую строку TPathData, или использовать код
     
    procedure star; var i: byte; a1,a2: single; begin Path.Clear; Path.MoveTo(PointF(0,-r)); a1:=Pi/5-Pi/2; a2:=-Pi/2; for i:=1 to 5 do begin Path.LineTo(PointF((r*cos(Pi/5)-d)*cos(a1+(i-1)*2*Pi/5),(r*cos(Pi/5)-d)*sin(a1+(i-1)*2*Pi/5))); Path.LineTo(PointF(r*cos(i*2*Pi/5+a2),r*sin(i*2*Pi/5+a2))); end; Path.ClosePath; path.Translate(r*cos(Pi/10),r); end; Где R - радиус описанной окружности вокруг звезды. В програме он равен 100. d - Разность радиусов внешней и внутренней окружности согласно рисунка

     
     
  5. Like
    Barbanel получил реакцию от Ingalime в Элементы стиля на Андроид   
    Возможно это не работает потому, что для Андроида у вас нет стиля, либо он называется не так, либо в данном стиле нет нет элемента с именем 'BackgroundColor'.
    Проверьте стили и убедитесь что структура имен совпадает.
  6. Like
    Barbanel получил реакцию от ENERGY в Элементы стиля на Андроид   
    Я так и думал.
    то что он один - не означает что он для всех платформ.
    ЕМНИП, дефолтный стиль предназначен для Виндовс.
    Давайте в этом точно разберемся.
    Сохраните стиль в файл, при сохранении выберите расширение файла .style
    Откройте этот файл текстовым редактором.
    Найдите в нем блок "object TStyleDescription"
    Покажите что стоит в поле "PlatformTarget" и "MobilePlatform".
    Или покажите весь блок.
  7. Like
    Barbanel получил реакцию от Anatoliy в Элементы стиля на Андроид   
    1) Было что-то не так со стилем. Удалил из стилей все элементы, кроме двух простейших прямоугольников для background. После этого ошибка более не проявлялась.
    2) Убедился что стиль для андроида доступен на устройстве, и нужные объекты присутствуют.
    Действительно, под Андроид данный код не работает, и стили здесь ни при чем.
    Что характерно, форма не обновляется, если ей присвоить новый стиль в рантайме. Внешний вид формы остается прежним.
    Если вместо формы использовать например панель - стиль меняется.
    Изменить цвет заливки конкретно в ресурсе у меня не удалось.
    Это работает стандартным образом:
    AObject := Panel1.FindStyleResource('backgroundrect'); if (AObject is TRectangle) then TRectangle(AObject).Fill.Color := TAlphaColorRec.Yellow; Если позарез нужно менять стиль формы в рантайме - положите на нее панель с align=alClient, и меняйте стиль панели.
    Попробуйте, может вас устроит такой способ.
    И да, расскажите, для чего вы меняете цвет именно в ресурсе, а не в примененном стиле объекта.
    Мне правда интересен такой кейс.
  8. Like
    Barbanel отреагировална Tumaso в Raise убивает программу для Android   
    У Эмбы есть описание подобной проблемы: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Migrating_Delphi_Code_to_Mobile_from_Desktop, раздел Use a Function Call in a try-except Block to Prevent Uncaught Hardware Exceptions
    условно говоря, код, который может вызвать аппаратное исключение, нужно вызывать из другой процедуры, и исключение ловить уже там. Это справедливо не только для iOS, но для андроида тоже.
    пример:
    procedure InternalG1; begin try // что то, приводящее к исключению except // здесь обработчик по факту игнорируется end; end; procedure G1; begin try InternalG1; except // здесь обработчик корректно обработает исключение end; end; А вообще у Grijjy team есть хорошая библиотека обработки необработанных исключений для андроида и иоса.
  9. Like
    Barbanel получил реакцию от Alisson R Oliveira в При LongTap срабатывают и OnTap и OnClick   
    У изображения нужно настроить на какие жесты он реагирует. Кинь на форму TGestureManager, потом настрой поля как показано ниже в коде.
    OnClick - срабатывает при касании объекта, срабатывает и в виндовс и на мобильных устройствах.
    OnTap - срабатывает несколько интеллектуальнее, причем только на мобильных устройствах (в виндовс не срабатывает).
    Упрощенно, он срабатывает только если ты коротко тапнул на контрол, если ты нажал на контрол и повел пальцем, скроля контент или скроля родительский ScrollBox, OnTap НЕ сработает.
    // инициализация Image.Touch.GestureManager := gestManager;     Image.Touch.InteractiveGestures := [TInteractiveGesture.LongTap];     Image.OnGesture := FormGesture; .. // обработка жеста procedure TfrmMain.FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean); begin     case EventInfo.GestureID of     igiLongTap :         begin             DoSomething();         end; end; end;  
  10. Like
    Barbanel отреагировална Tumaso в Переход на новую модель разрешений   
    @Alex7wrt,
    конечно смогут. Минимально допустимая версия указывается в minSdkVersion. У меня например во всех приложениях установлено <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26" />
  11. Haha
    Barbanel отреагировална Евгений Корепов в Сборка приложений под Linux   
    Проблему решил. Сам дурак. Прописал в iptables разрешающее правило - все заработало. 
  12. Like
    Barbanel отреагировална vasilius в сборка проекта с библиотеками   
    Принимаю поздравления...
    Начал переносить код с нерабочего проекта в рабочий (который запускался)...
    у меня в Create было заполнение поля стиля...
    тип значения TValue 
    у меня было
     =  TValue::From<String>("0");   этот код нормально работал без линковки - все было хорошо
    с линковкой вылазил Access violation описаный выше
    решение такое :
    = TValue::_op_Implicit(String("0")); К сожалению, дебагер, как я и говорил, абсолютно бесполезный в этой среде, жаль.....
     
  13. Like
    Barbanel получил реакцию от Anatoliy в переходпо ссылке с push уведомления   
    Правильно ли я понимаю: вы пишете некое приложение, которое показывает пользователю веб-ссылку в уведомлении?
    Имхо: нельзя переходить на внешний ресурс, тапнув на ссылку в уведомлении.
    Всегда сначала нужно показать вашу программу, при этом в зависимости от логики программы - показать что именно пришло (чтобы пользователь мог понять полезное ли для него это сообщение), и только потом давать возможность переходить по внешним ссылкам.
  14. Like
    Barbanel отреагировална Tumaso в Разрешения для приложения не вступают в силу на Android   
    У делфи большой плюс - кроссплатформенность.  У меня реально 90% единого кода для виндов, андроида и иоса. Специфичного для каждой платформы не так и много, по большому счету.
    Писать отдельно в андроид студии, отдельно в xcode, отдельно в делфи с VCL реально не очень хочется Заказчикам то пофиг, они хотят как минимум мобильные приложения сразу и для андроида и для иоса.
  15. Like
    Barbanel отреагировална Евгений Корепов в Разрешения для приложения не вступают в силу на Android   
    Вот как то так, на базе штатного примера:
      Такс, я малость лопухнулся, это пример я уже под карнавал переделал, работать на токио и остальных версиях не будет. Так что я его удалил. Поищите по форуму - уже неоднократно обсуждалась тема.
  16. Like
    Barbanel получил реакцию от fidel42rus в переходпо ссылке с push уведомления   
    Правильно ли я понимаю: вы пишете некое приложение, которое показывает пользователю веб-ссылку в уведомлении?
    Имхо: нельзя переходить на внешний ресурс, тапнув на ссылку в уведомлении.
    Всегда сначала нужно показать вашу программу, при этом в зависимости от логики программы - показать что именно пришло (чтобы пользователь мог понять полезное ли для него это сообщение), и только потом давать возможность переходить по внешним ссылкам.
  17. Like
    Barbanel отреагировална dnekrasov в сборка проекта с библиотеками   
    В свойствах проекта укажите "Link with runtime packages = False"
  18. Like
    Barbanel отреагировална WebPuper в Механизм работы с APK Extension file (OBB)   
    В FMX, насколько я смог удостовериться, нет нормальных директив чтобы работать с OBB. Видимо посчитали это излишним, т.к. по сути речь идет о работе с обычной файловой системой.
    После распаковки приложения в каталоге внешнего хранилища (карты или, если нет, внутренней памяти)  Android/obb/<application ID>/ появится файл дополнений с расширением *.obb 
    Это обычный архив ZIP и его можно распаковать, например, в GetDocumentsPath средствами TZipFile
    Проблема в том, что в FMX нет процедуры возвращающей путь к файлу obb. 
    Пришлось написать костыль: 
    UnicodeString GetObbFile() { UnicodeString str = StringReplace(System::Ioutils::TPath::GetPublicPath(), "/data/", "/obb/", TReplaceFlags()); str = StringReplace(str, "/files", "/", TReplaceFlags()); TSearchRec sr; FindFirst(str + "*.obb", faAnyFile, sr ); return str + sr.Name; } Теперь у вашего приложения есть путь к единственному obb
  19. Like
    Barbanel отреагировална ENERGY в Рабочее место для IOS разработки   
    Имхо тогда уже лучше купить обычный ноут под Win с Intel и на нем запустить виртуалку. Это более универсальное решение. Мне решение с виртуальной машиной больше нравится, т.к в VMWare удобно создавать образы всей системы. Особенно это актуально перед обновление системы или Xcode. Не работает после обновления? Пару кликов и ты вернулся к рабочей версии.
    Ну или MacMini, тоже бюджетное решение.
  20. Like
    Barbanel получил реакцию от Anatoliy в Ошибка QuotedStr   
    Ошибка "Type mismatch" означает несоответствие типов.
    Либо фильтр неправильно настроен, либо поле имеет другой тип.
    Если поле всетаки строковое - посмотрите тип поля (String/WideString) и кодировку, если указана.
    Посмотрите также, что возвращает источник данных (query или что у вас источником является) по по этому полю.
    PS еще можно писать так:
    Child.Filter := 'CHILDFAM=' + s.QuotedString;
  21. Like
    Barbanel отреагировална dnekrasov в FMX Form   
    Не за что.
    Маленькое уточнение - это хорошо работает только если один монитор. Вообще правильнее эмулировать максимизацию окна следующим образом:
    SetBounds(Screen.DisplayFromRect(Bounds).WorkAreaRect);  
  22. Like
    Barbanel получил реакцию от Tumaso в Что быстрее Rectangle или TButtonStyleObject, TText или TButtonStyleTextObject   
    Вы знаете, я лично такие замеры не производил.
    Я пользовался здравой логикой: поменьше анимаций, и поменьше объектов в стиле.
    Нет, вы не один.
    Если вы действительно хотите получить ответ на свой вопрос - сделайти сами такой тест производительности.
    Накидайте в стиль то что вы описали, создайте 100500 объектов и замерьте скорость.
    Сообщество скажет вам спасибо, да и вы получите профит!
  23. Like
    Barbanel получил реакцию от Anatoliy в Что быстрее Rectangle или TButtonStyleObject, TText или TButtonStyleTextObject   
    Вы знаете, я лично такие замеры не производил.
    Я пользовался здравой логикой: поменьше анимаций, и поменьше объектов в стиле.
    Нет, вы не один.
    Если вы действительно хотите получить ответ на свой вопрос - сделайти сами такой тест производительности.
    Накидайте в стиль то что вы описали, создайте 100500 объектов и замерьте скорость.
    Сообщество скажет вам спасибо, да и вы получите профит!
  24. Like
    Barbanel получил реакцию от Евгений Корепов в Идентификация устройства   
    Всем доброго времени!
    Как и обещал, выкладываю либы для работы с KeyChain.
    Либы были взяты у братьев-китайцев, ни слова про покупку сказано не было (хотя чтобы выкачать их пришлось заплатить какому-то облачному сервису).
    Использовать просто, за все отвечают три функции: 
    function StoreItemToKeychain(const AServiceName, AKey, AValue: string; const bOverride: Boolean=True): Boolean; function GetItemValueFromKeychain(const AServiceName, AKey: string): string; function DeleteItemFromKeychain(const AServiceName, AKey: string): Boolean; Ну и традиционно нужно подключить саму библиотеку, все находится в аттаче.
    Enjoy! ?
    iOS_KeyChain.zip
  25. Like
    Barbanel отреагировална ENERGY в Кнопка Done   
    У формы есть событие OnVirtualKeyboardHidden, оно срабатывает когда юзер нажимает Done и клавиатура скрывается.
    Также, срабатывает событие OnExit компонента (напр TEdit).
×
×
  • Создать...