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

Ingalime

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

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

  • Посещение

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

    5

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

  1. Like
    Ingalime отреагировална brunnengi в Странный баг с TMultiView 2   
    Кинь на форму Layount. Сделай HitTest = true;
    Когда MultiView "активен" выводи Layout поверх всех компонентов кроме Multiview. Делай Layout visile true, hittest=true, BringFront;
    Тогда если Нажимать "мимо" multiview то отрабатывать нажатие будет имено layout а не какой либо другой компонент
  2. Like
    Ingalime отреагировална Равиль Зарипов (ZuBy) в Исключить устройства с Intel Atom как не поддерживаемые   
    Скриншоты с планшета добавлены в ГуглПлей?
  3. Like
    Ingalime отреагировална Andrey Efimov в Исключить устройства с Intel Atom как не поддерживаемые   
    Оф. справка: Workaround for Android 4.0/Kindle Fire Message: "Application does not support this device"
  4. Like
    Ingalime отреагировална haword в Перевод VCL приложения на FMX. Подводные камни, стоит ли?   
    у меня тоже нет никакой ошибки на рио. пример с ошибкой можно?
  5. Like
    Ingalime отреагировална Slym в Nox: в приложении произошла ошибка   
    nox это x86, а надо Arm
  6. Like
    Ingalime отреагировална sinuke в [Android] Прозрачный StatusBar в RAD 10.3 Rio   
    Привет
    Вчера была выпущена финальная версия RAD Studio 10.3 Rio, в которой много нововведений для Андройд. Но вот про статусбар снова "забыли". Хотя не совсем, добавили файлик styles-v21.xml, который превносит новую материальную тему на устройствах под управлением Android 5.0 и выше вместо устаревшей Holo.
    Но все равно свойство формы SystemStatusBar так и не реализовали. Поэтому при запуске статус бар будет окрашен в унылый серый цвет (см. скриншот).

    Для того, чтобы сделать статусбар прозрачным и поместить под него содержимое формы, то достаточно сделать несколько несложных шагов:
    1. Убираем из деплоймента (Project -> Deployment) файл styles-v21.xml (можно просто снять галочку рядом с именем файла)

    2. Добавить в деплоймент проекта новый файл styles-v21.xml (styles-v21.zip) и прописать ему путь res\values-v21\

    3. В результате получится следующий вид

     
    P.S. В новом файле по сравнению со стандартным добавилась строчка <item name="android:windowTranslucentStatus">true</item>, которая и отвечает за прозрачный статусбар
    P.P.S. Чтобы определять размер статус бара, все также можно воспользоваться решеним ZuBy - http://blog.rzaripov.kz/2016/12/android-ios.html
    P.P.P.S. Тестовый проектик - StatusBar.zip
  7. Like
    Ingalime отреагировална krapotkin в Троит картинка при движении объекта   
    эмм, а насчет рисовать на специально выделенных местах - не на форме а на PaintBox никак?
    там все без бубнов взлетает
  8. Like
    Ingalime отреагировална Barbanel в Nox: в приложении произошла ошибка   
    Поясните плиз для тупых, что есть Nox?
  9. Like
    Ingalime отреагировална Tumaso в Как собрать apk для android 8.1 не имея устройства с такой версией android?   
    В Rio да, укажите api 28
  10. Like
    Ingalime отреагировална Tumaso в Как собрать apk для android 8.1 не имея устройства с такой версией android?   
    Delphi Rio:
    1. Target Platform -> Android
    2. Project -> Build
    3. Project -> Deploy
    В итоге apk для android 5/6/7/8/8.1/9 создан
  11. Like
    Ingalime отреагировална Котэ в Цвет поля TTextObjectAppearance   
    Блин пока создам вопрос, найду ответ.
    Код надо поправить было.
    function TfrmM.ColorToAlphaColor(Value: TColor): TAlphaColor; var CRec: TColorRec; ARec: TAlphaColorRec; begin CRec.Color := Value; ARec.A := FF; ARec.B := CRec.B; ARec.G := CRec.G; ARec.R := CRec.R; Result := ARec.Color; end;  
  12. Like
    Ingalime отреагировална Denis Vasilyev в Серия статей, как настроить Android, OS X, iOS Simulator, iOS с RAD Studio (Delphi, C++ Builder)   
    Серия статей с пошаговой инструкцией, как подключить и настроить Android, OS X, iOS Simulator, iOS для работы с RAD Studio.
     
    Как настроить Android и RAD Studio XE7 (Delphi, C++ Builder)
    http://habrahabr.ru/company/delphi/blog/253929/

     
    Как настроить Mac OS X, iOS-симулятор и RAD Studio XE8 (Delphi, C++ Builder)
    http://habrahabr.ru/company/delphi/blog/255721/

     
    Как настроить iOS-устройство и RAD Studio XE8 (Delphi, C++ Builder)
    http://habrahabr.ru/company/delphi/blog/265313/

  13. Like
    Ingalime отреагировална void в Мануал по использованию сторонних нативных SDK. Нужна Ваша помощь   
    1)   Delphi -> Project Options -> Building -> Delphi Compiler -> Linking -> Option passed to the LD linker
    Добавил нужные для компиляции зависимости стороннего framework с соответствующими параметрами и бибилиотеками

    у меня например:
       -ObjC -L C:\Users\Andrey\Documents\Embarcadero\Studio\SDKs\iPhoneOS12.1.sdk\usr\lib ..\_CommonModules\YandexMetrica\Frameworks\Foundation.framework\Foundation ......
    ..... -lsqlite3 -lz -lc++
    (после такой линковки второй пункт не понадобился)

    Но на всякий дополню
    2)
      dependency 'stdc++', 'z';
  14. Like
    Ingalime отреагировална krapotkin в Изменение ширины TTextObjectAppearance   
    а разве не в OnUpdateObjects/OnUpdatingObjects это должно происходить ?
  15. Like
    Ingalime отреагировална Maximus в Размер формы на Android   
    Поиск рулит
     
  16. Like
    Ingalime отреагировална Barbanel в Как убить кнопку кликнув на нее саму   
    function CreateGUID(): string; var GUID: TGUID; begin if ( System.SysUtils.CreateGUID(GUID) <> 0 ) then Result := '' else Result := GUIDToString(GUID); end; ... begin ... lFrame.Name := CreateGUID(); end; Это чтобы уж совсем быть уверенным)))
    PS. В Delphi 7 - 100% можно создавать компоненты не присваивая ему имя, у нас так все справочники в CRM работали.
  17. Like
    Ingalime отреагировална kami в Как убить кнопку кликнув на нее саму   
    помнится, отвечал уже кому-то на форуме. Для динамически создаваемых компонентов просто не указывайте имя. Не нужно оно им. Тогда эта проблема отпадает сама собой.
  18. Like
    Ingalime отреагировална slav_z в Как убить кнопку кликнув на нее саму   
    Намного проще оставить в покое метод Release.
  19. Like
    Ingalime отреагировална Yarpda в Ура! Вышла 10.3 Rio!   
    Если планируется выставлять на playmarket то Рио (поддержка 26 targetsdk), если нет то Берлин постабильнее как по мне. Хотя если начинать то лучше сразу на Рио. Переходить все равно придется ..
  20. Like
    Ingalime отреагировална Евгений Корепов в Как застать TWebBrowser обрабатывать адреса эл. почты (Android)   
    Прошу прощения, я ввел вас в заблуждение (тестировал на одном своем проекте). Открытие подобных ссылок вы должны делать самостоятельно, обрабатывая событие браузера ShouldStartLoadWithRequest.
    Вот код:
    uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, {$IFDEF ANDROID} Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers, {$ENDIF ANDROID} FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.WebBrowser, FMX.Controls.Presentation; ..... const ConstMainURL = 'http://www.docme.ru/contacts'; .... procedure THeaderFooterForm.WebBrowser1ShouldStartLoadWithRequest( ASender: TObject; const URL: string); begin if Not URL.StartsWith(ConstMainURL) then // Если ссылка перехода отличается от базовой, то открываем ее через активити begin WebBrowser1.Stop; OpenURL(URL); end; end; procedure THeaderFooterForm.OpenURL(const AUrl: string); {$IFDEF ANDROID} var Uri: Jnet_Uri; OpenLinkIntent: JIntent; {$ENDIF ANDROID} begin {$IFDEF MSWINDOWS} ShellExecute(0, 'open', PChar(AUrl), nil, nil, SW_SHOWNORMAL); {$ENDIF MSWINDOWS} {$IFDEF ANDROID} Uri := StrToJURI(AUrl); OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri); TAndroidHelper.Activity.startActivity(OpenLinkIntent); {$ENDIF ANDROID} end; И прикрепляю ваш проект с моими изменениями
    WebPrj.zip
  21. Like
    Ingalime отреагировална Евгений Корепов в Как застать TWebBrowser обрабатывать адреса эл. почты (Android)   
    Все отлично обрабатывается и открывается. Любой браузер по определению должен это делать. У вас должна быть правильная ссылка на электронную почту, в примеру <a href="mailto:putin@russia.gov">Напишите письмо президенту</a>
    P.S. Или так, если хотите видеть адрес <a href="mailto:putin@russia.gov">putin@russia.gov</a>
  22. Like
    Ingalime отреагировална slav_z в Как убить кнопку кликнув на нее саму   
    в XE8 как раз и было реализовано через помещение в объект TPurgatory. (удален из 10)
    он как раз и помещал объект к себе в список и удалял "чуть позже" по таймеру (через 10 мс).
    unit FMX.Types; type TPurgatory = class (TComponent) public const TimerInterval: Integer = 10; private FInstanceList: TList<Pointer>; FTimerHandle: TFMXHandle; FPlatformTimer: IFMXTimerService; procedure StartTimer; procedure StopTimer; procedure TimerProc; procedure UpdateTimer; protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Clear; procedure Add(const Instance: TFmxObject); procedure Remove(const Instance: TFmxObject); function Contains(const Instance: TFmxObject): Boolean; end;  
  23. Like
    Ingalime отреагировална slav_z в Работа с атрибутами текста   
    Как сделать текст с подобными атрибутами? Очень просто!
    (Цвет текста не работает в XE8) Вот весь код:
    unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.UIConsts, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, FMX.TextLayout; type TForm1 = class(TForm) Button1: TButton; Text1: TText; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} type TTextAccess = class(TText); procedure ClearTextAttribute(Text: TText); begin TTextAccess(Text).Layout.ClearAttributes; end; procedure AddTextAttribute(Text: TText; Pos,Length: Integer; FontStyles: TFontStyles; FontColor: TAlphaColor); var Font: TFont; begin Font:=TFont.Create; Font.Assign(Text.Font); Font.Style:=FontStyles; TTextAccess(Text).Layout.AddAttribute( TTextRange.Create(Pos,Length), TTextAttribute.Create(Font,FontColor)); end; procedure TForm1.Button1Click(Sender: TObject); begin AddTextAttribute(Text1,10,17,[TFontStyle.fsBold],claRed); AddTextAttribute(Text1,34,8,[TFontStyle.fsUnderline],claBlue); AddTextAttribute(Text1,47,8,[TFontStyle.fsStrikeOut],claGreen); Text1.Repaint; end; end.  
  24. Like
    Ingalime отреагировална Brovin Yaroslav в Как сделать буквы разного цвета?   
    Добрый вечер,
     
    Такую надпись можно решить несколькими способами в зависимости от дополнительных условий:
    Будет ли меняться текст надписи или нет? В зависимости от этого есть четыре решения:
     
    I. Текст надписи не допускает изменений
    В этом случае проще всего сделать картинку с этим текстом и использовать ее в вашем приложении. Где нужно отобразить, использовать TImage.
     
    II. Текст надписи может изменяться
    Тут два решения:
    1. Используем набор TText или TLabel. Для отображения групп последовательных символов одного цвета используем отдельный контрол TLabel или TText. Каждую группу раскрашиваем требуемым образом через настройки контролов.
    На скриншотах ниже, я использовал контейнер TLayout и складываю туда несколько объектов TText с выравниванием по левому краю.

    2. Рисовать надпись вручную с использование TTextLayout. Этот способ сложнее, но зато универсальнее и эффективнее. Используя TTextLayout по очереди отрисовываем все буквы с нужными цветами и параметрами.
    3. На основе решения 2 в этой части, сделать свой компонент.
  25. Like
    Ingalime отреагировална Ry Koo в NotificationCenter1.CancelALL отменяет только одно уведомление   
    создаю несколько локальных уведомлений с периодом вывода в минуту, всё ОК, выводятся. При попытке отменить их всех, отменяется только созданное первым, остальные продолжают выводиться и ничего уже с этим не поделать, отменить далее их невозможно. Поимённая отмена NotificationCenter1.CancelNotification(имя напоминания) тоже не действует. Погуглив наткнулся на пост, размещённый более года назад:
    https://stackoverflow.com/questions/34719635/delphi-tnotificationcenter-multiple-repeating-notifications-has-unexpected-behav
    С тех пор много воды утекло, не нашли ли нормального лекарства от этого глюка? Может что делаю не так?
    Кстати, там и решение предложено и оно работает https://github.com/dangas56/SendCancelNotification/blob/master/System.Android.Notification.pas
    Просто не верится что до сих пор приходится переписывать самим внутренние файлы.
×
×
  • Создать...