Jump to content

Search the Community

Showing results for tags 'fmx'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Delphi Questions and Answers
    • Algorithms, Data Structures and Class Design
    • VCL
    • FMX
    • RTL and Delphi Object Pascal
    • Databases
    • Network, Cloud and Web
    • Windows API
    • Cross-platform
    • Delphi IDE and APIs
    • General Help
    • Delphi Third-Party
  • C++Builder Questions and Answers
    • General Help
  • General Discussions
    • Embarcadero Lounge
    • Tips / Blogs / Tutorials / Videos
    • Job Opportunities / Coder for Hire
    • I made this
  • Software Development
    • Project Planning and -Management
    • Software Testing and Quality Assurance
  • Community
    • Community Management

Calendars

  • Community Calendar

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Delphi-Version

Found 125 results

  1. vfbb

    Skia4Delphi

    Website: github.com/viniciusfbb/skia4delphi Skia4Delphi is a cross-platform 2D graphics API for Delphi based on Google's Skia Graphics Library (skia.org). Google's Skia Graphics Library serves as the graphics engine for Google Chrome and Chrome OS, Android, Flutter, Xamarin, Mozilla Firefox and Firefox OS, and many other products. Skia provides a more robust Canvas, being very fast and very stable, with hundreds of features for drawing 2D graphics, in addition to a text shaping engine designed to render texts in the most diverse languages with right-to-left support (such as the Persian language), full support for loading SVG files, support for creating PDF files, support for rendering Lottie files (verotized animations created in Adobe After Effects), integration with the GPU, among countless other cool features. Skia's idea is similar to Firemonkey's, the same codebase used in an OS will work the same on other platforms. It is also possible to design using the CPU in independent background threads. Skia also has native codecs, of course if you don't use the SKCodec class, when loading an encoded image it will give priority to using the platform's native codec, but it is possible to use its codec, for example for jpeg files it uses libjpeg-turbo and for png files libpng which maybe in certain environments may perform better than native. See some examples: Advanced shapes Advanced text rendering / shaping Svg Lottie files And much more...
  2. I am a hobby developer so I use CE. I have an Android app developed in the FireMonkey framework. I want to connect it to an Azure SQL database but I have found the Community Edition restrictions seem to prevent it. CE contains ADO components in the normal Delphi IDE but the FireMonkey IDE doesn't. FireMonkey in CE contains many of the FireDAC components but not an MSSQL driver. There are some 3rd party components but the ones I have found are too expensive for me. Does anyone know any way I can connect my Community Edition FireMonkey Android app to an Azure SQL database without paying hundreds of dollars?
  3. I had compatibility issues with the connection of PAServer to the virtual Mac I am using. Giving a brief context, I am using a virtual Mac through a service provided by MacInCloud (https://www.macincloud.com/), which offers an installed and updated PAServer on the machine from the following link: https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Installing_the_Platform_Assistant_on_a_Mac The problem is that the version of Delphi 11.3 we are using requires compatibility with version 13.3.12.7 of PAServer, but the download from the official Embarcadero page provides PAServer version 13.3.12.6. As the Mac machine belongs to the personnel at MacInCloud, they do not accept the installation of a .pkg that does not come from an official Embarcadero download link. (I don't have administrator permissions, so I can't install it myself.) So, the main question is, how can I get in touch with someone from Embarcadero to request an update to the official Download link?
  4. Hi, I take many photos with my Android phone. And now I need a way to Add some search text to the image so that I can find the photos. With a custom image viewer app I will create in conjunction with the metadata reader/writer, my search method would be to open the phone's Gallary (I don't know how to do this yet) and then enter a search word and only photos that match will show, like the way they do when you are in the Gallary app. I searched around and see references for ccr-exif but it is for Delphi VCL, not FMX/Android. Is there a Delphi unit that provides this or someplace where I can download a working project to accomplish this ? TIA.
  5. HI there i just made a try, i started there! To work on the Android platform using compile directives, i needed to make some modifications to the code in several files. Lets focus on 'svn.overbyte.be/svn/icsv9/Source/OverbyteIcsUtils.pas'.The classTIcsIntegerList is essentially a wrapper around the TList class, since this code was designed for use in a Windows platform target, on a different platform, i needed to make some adjustments. type TIcsIntegerList = class(TObject) private FList : TList<Integer>; // Use TList<Integer> instead of TList function GetCount: Integer; function GetFirst: Integer; function GetLast: Integer; function GetItem(Index: Integer): Integer; procedure SetItem(Index: Integer; const Value: Integer); public constructor Create; virtual; destructor Destroy; override; function IndexOf(Item: Integer): Integer; function Add(Item: Integer): Integer; virtual; procedure Assign(Source: TIcsIntegerList); virtual; procedure Clear; virtual; procedure Delete(Index: Integer); virtual; property Count: Integer read GetCount; property First: Integer read GetFirst; property Last : Integer read GetLast; property Items[Index: Integer] : Integer read GetItem write SetItem; default; end; // ... other codes { TIcsIntegerList } function TIcsIntegerList.Add(Item: Integer): Integer; begin Result := FList.Add(Item); // No need to typecast Item to Pointer end; procedure TIcsIntegerList.Clear; begin FList.Clear; end; constructor TIcsIntegerList.Create; begin FList := TList<Integer>.Create; // Use TList<Integer> instead of TList end; procedure TIcsIntegerList.Delete(Index: Integer); begin FList.Delete(Index); end; destructor TIcsIntegerList.Destroy; begin FList.Free; inherited; end; function TIcsIntegerList.GetCount: Integer; begin Result := FList.Count; end; function TIcsIntegerList.GetFirst: Integer; begin Result := FList.First; // No need to typecast FList.First to Integer end; function TIcsIntegerList.GetLast: Integer; begin Result := FList.Last; // No need to typecast FList.Last to Integer end; // ... other codes but i faced a lot of errors when i target android platform and compiled, it gives me errors like: [DCC Error] OverbyteIcsUtils.pas(5931): E2023 Function needs result type [DCC Error] OverbyteIcsUtils.pas(5933): E2003 Undeclared identifier: 'FList' [DCC Error] OverbyteIcsUtils.pas(5933): E2003 Undeclared identifier: 'Item' [DCC Error] OverbyteIcsUtils.pas(5938): E2004 Identifier redeclared: 'TIcsIntegerList' [DCC Error] OverbyteIcsUtils.pas(5940): E2003 Undeclared identifier: 'FList' [DCC Error] OverbyteIcsUtils.pas(5945): E2037 Declaration of 'TIcsIntegerList' differs from previous declaration ...: So how to fix it? Or can anyone point me to the right direction?
  6. ertank

    Install failed older sdk

    Hello, I am using Delphi 10.4.2 I have a project that I developed about three years ago for a specific Android 5.1.1 device built in China. I do not remember what Delphi version I was using at that development time three years ago. Today, I need to do some modifications to that project. There is no problem compiling. When I try to debug run, I get error "Failure INSTALL_FAILED_OLDER_SDK" at deployment phase. When I check for min supported Android version is listed as Android 5.1 here https://docwiki.embarcadero.com/RADStudio/Sydney/en/Android_Devices_Supported_for_Application_Development I do not know if anything changed for Delphi 10.4.2 as I could not find a specific documentation about it. Is there anything I can do to fix this problem? Thanks & Regards, Ertan
  7. I have a question in regards to the new SKI support. When I 'enabled' SKIA in the IDE there was no noticeable change to the project or settings that I found. I could 'disable' it on the IDE as well. What I finally noticed was in the executable folder there was now a sk4d.dll. If I move the file out of that directory the application still ran. (I was expecting some sort of load error (?)).. My question- so even though the application is self contained otherwise - the 32 bit or 64 bit sk4d.dll file needs now to be deployed also? Thanks in advance
  8. I guess title says all, I put a TEdit/TMemo on a form, copy text from any source, and after by using the Control-V it won't paste, but of course if I right click a standard popup shows up and I can paste. Is possible to make the FMX controls to accept it? I can intercept the keyboard, test if the data is text, populate the text control, at first shot it will change the value of the control, not wanted behavior at all, like the popup it should fill at the caret/cursor position. Am I forgetting something here?
  9. weabow

    Deep links to open the app

    Hi there, I would like to open my app (windows, macos, ios, android & linux) clicking on a link (inside an email for example), and pass to the app a parameter which is inside the link. Is it possible ? Regards
  10. IMG SPA

    Delphi To IOS Deploying error

    Hello, I'm trying to deploying a Delphi FMX application to iPhone IOS. I have no problems on connecting with the MAC but I have an internal API error on executing (please see attached file) Delphi version: 11.2 Patch 1 IOS version: 16.6 X-code version: 14.3.1 Can anyone help me? Thanks
  11. helste7023

    App for Android 11 with Delphi 10.1

    Hello, I still am on Delphi 10.1, because it does all what need and I hat spending 2 days installing all my third party components after upgrading to a new Delphi version. And of course it is not that cheap any more as it used to be, when I started with Delphi a long time ago. Unfortunately an Android app I made with Delphi 10.1. does not start on a new device with Android 11. Is there a way to get an app, that is made with Delphi 10.1 working on Android 11 or do I have to upgrade to Delphi 11.x? Any help would be highly appreciated.
  12. hackbrew

    Handling Androids Navigation buttons

    I'm working on an Android 13 FireMonkey mobile app in Delphi 11.3 which has a TabControl with four tabs. I'm having trouble with managing the Androids Navigation buttons and wondering if it's a preferred practice to hide the buttons and have the user use gestures instead. Right now, if the user presses the back button, I'm capturing the key in the OnKeyUp on my apps MainForm via if Key = vkHardwareBack then I move back a tab and/or display an exit dialog if the user is on the first tab. That works fine, but when the user taps the home or overview buttons and then comes back to my app, it starts from the beginning. What is the recommended process on how to make an Android app behave if the user taps on any of Androids Navigation buttons (back/home/overview)? Is it considered a best practice to hide them and have the user use gestures instead?
  13. Hello, I'm trying to create a combobox that I can style to look like this. I'd **LIKE** to do it solely in the WYSIWYG style designer. Can anyone point me to a tutorial on how even to change the font size in the Style designer? I'm admittedly such a noob in this, but I'm at a total loss. Thanks. - Mike
  14. pyscripter

    Looking for SVG support in Delphi?

    In an earlier thread I presented an Interface-based access to native Windows (Direct2D) SVG support for Delphi applications. This has now been integrated into the SVGIconImageList components by @Carlo Barazzetta. Carlo is a kind of master of ImageLists (among other things). Have a look at his IconFontsImageList for instance. His SVGIconImageList component was based on the work of Martin Walter who must be a great programmer. His SVG component covered almost every SVG element and was well structured and cleanly written. There were numerous bugs and issues though, which, to a large extent, were fixed over the last few weeks and the code was refactored and optimized. Finally, @Vincent Parrett contributed a virtual version of the Image List, mirroring Delphi's VirtualImageList. So in its current form the component features: An SVGImageCollection component that inherits from Delphi's CustomImageCollection and thus is compatible with VirtualImageList A choice of SVG engines: the pascal one based on Martin's work which is using GDI+ and the native Windows one which is using Direct2D. Other SVG engines can be plugged-in with minimum effort. Excellent design support with a nice and effective SVGImageCollection editor developed by Carlo and the built-in VirtualImageList editor. Support for changing the opacity and color of the SVGs including using GrayScale. If you adopt Material Design for example and you use VCL styles, you can adjust the icon color to the style. Compatibility with older Delphi versions going back to XE6. It is free and open-source Svgs are vastly superior to bitmaps because they are typically tiny text files and scale perfectly. So, you do not need to ship with your application multiple resolutions of your images to match the DPI of the monitors. And there is a vast number of free SVGs to cover most needs. IMHO the combination of SVGImageCollection with Delphi's VirtualImageList is the best available solution (commercial ones included) for building DPI-aware Windows applications. Give it a try.
  15. Hello all, We've just deployed an update to our FMX app on the Play Store, but we're seeing a worrying number of ANRs reported in the Play Store vitals area. We've changed a lot in this latest update including much heavier use of styles from style books. We also can't reproduce the ANRs on any of our 10 Android test devices as it's only impacting < 1% of our user case (around 600 instances from 200,000 installs). I have a clear call stack (below) which is showing that the ANR is a block on a monitor when trying to apply the styles to my UI elements, loading the resource specifically. Does anyone have any ideas of how this could theoretically be caused? We do use a lot of threads so my first thing to check was that we weren't trying to update the UI from a thread without Synchronize or Queue but I can't find any case where we aren't. Any suggestions for what I could look for would be very welcome! Thanks Call stack: (System::Sysutils::WaitForSyncWaitObj(void*, unsigned int)+100) (System::Sysutils::WaitOrSignalObj(void*, void*, unsigned int)+96) (System::TMonitor::Enter(unsigned int)+528) (System::Rtti::TPoolToken::TPoolToken()+120) (System::Rtti::EnsurePoolToken(System::DelphiInterface<System::IInterface>*)::DoCreate(void*)+52) (System::Rtti::EnsurePoolToken(System::DelphiInterface<System::IInterface>*)+32) (System::Rtti::TRttiContext::KeepContext()+104) (System::Classes::BeginGlobalLoading()+20) (Fmx::Controls::TStyleContainer::LoadStyleResource(System::Classes::TStream*)+40) (Fmx::Controls::TStyleContainer::CreateStyleResource(System::UnicodeString)+92) (Fmx::Controls::TStyleContainer::FindStyleResource(System::UnicodeString, bool)+36) (Fmx::Controls::TStyledControl::LookupStyleObject(...)::LookupStyleInObject(void*, Fmx::Types::TFmxObject*, System::UnicodeString)+88) (Fmx::Controls::TStyledControl::LookupStyleObject(...)::LookupStyle(void*, Fmx::Types::TFmxObject*)+84) (Fmx::Controls::TStyledControl::LookupStyleObject(...)+336) (Fmx::Controls::TStyledControl::GetStyleObject(bool)+236) (Fmx::Controls::TStyledControl::GetStyleObject()+28) (Fmx::Controls::TStyledControl::ApplyStyleLookup()+124) (Fmx::Controls::Presentation::TPresentedControl::ApplyStyleLookup()+52) (Fmx::Controls::TStyledControl::PrepareForPaint()+32) (Fmx::Controls::TControl::PrepareForPaint()+656) (Fmx::Forms::TCustomForm::PrepareForPaint()+504) (Fmx::Forms::TCustomForm::PaintRects(System::Types::TRectF const*, int)+76) (Fmx::Platform::Ui::Android::TFormRender::Render()+124) (Fmx::Platform::Ui::Android::TAndroidWindowHandle::TSurfaceViewListener::surfaceChanged(...)+56) (System::Rtti::Invoke(void*, System::DynamicArray<System::Rtti::TValue>, System::Typinfo::TCallConv, System::Typinfo::TTypeInfo*, bool, bool)+556) (System::Rtti::TRttiInstanceMethodEx::DispatchInvoke(System::Rtti::TValue const&, System::Rtti::TValue const*, int)+1328) (System::Rtti::TRttiMethod::Invoke(System::TObject*, System::Rtti::TValue const*, int)+84) (Androidapi::Jnibridge::dispatchToNative2(...)+692) at com.embarcadero.rtl.ProxyInterface.dispatchToNative2 (Native method)
  16. I have a problem with delphi ios controls that i do not know why?! I have created a simple project on Delphi 11.2 and (test run Delphi 11.3) with some controls: TTabControl, TEdit, TCombobox, TMemo, TButton... 1. When i run this project on iPhone 11 device with iOS 16 then everything is OK 2. However, when i run this project on iPhone 14 device with iOS 16, then controls have not show on the form (I have attached two screen images of this sample) My Mac: MacBook Pro 2020, Intel Core i7, Moneterey OS, XCode 14 Please help me, thanks!
  17. Giorgi Chapidze

    Set pipeline between UI and cmd.exe

    Hi! I am developing a simple editor application in which you can type Pascal code and click the compile button, which will connect cmd.exe in the background and compile a .pas file via freepascalcompiler. I have two separate TMemo components. one for writing source code and a second read-only component for showing compilation messages. To sum up, I want to execute the "fpc file_name. pas" command in the background and then grab the compiled messages and display them on the UI. How can I achieve such behavior? https://github.com/gchapidze/fmx-pascalIDE
  18. My sample using Thread running in another forms some tasks... not 100% perfect or SAFE... but works if you take a care about my "little code" of course, needs to know "what going on..." and to do some changes for a specific usage... then, dont blame me, this it's just a simple sample. ok? take the idea and do better!!! maybe a "container using Observer Pattern" would help here, but "arrays" was good for me in this time! try close all forms, or simply the mainform 🙂 you CAN click many time on Button and raise yourS threadS... 1x, 2x, 3x, etc... dont abuse :))) // ---- FormMain ----- var MainForm : TMainForm; LHowManyThreadRunning: integer = 0; // Global vars was just for my test... dont use it, at all!!! implementation {$R *.dfm} uses uFormWithThread; var LArrForms: TArray<TForm>; LTop : integer = 0; LLeft : integer = 0; procedure MyDestroyForms; begin for var F in LArrForms do if (F <> nil) then FreeAndNil(F); end; procedure TMainForm.Bnt_Call_Form_ThreadClick(Sender: TObject); var i: integer; begin i := Length(LArrForms); LArrForms := LArrForms + [TFormWithThread.Create(nil)]; LArrForms[i].Top := LTop; LArrForms[i].Left := LLeft; LArrForms[i].Show; // LTop := LTop; LLeft := LLeft + LArrForms[i].Width; end; procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose := LHowManyThreadRunning = 0; end; procedure TMainForm.FormDestroy(Sender: TObject); begin MyDestroyForms; end; procedure TMainForm.Btn_Try_Close_All_Form_ShowingClick(Sender: TObject); begin for var F in LArrForms do if (F <> nil) then F.Close; end; initialization ReportMemoryLeaksOnShutdown := true; end. // --- Secondary Forms... var FormWithThread: TFormWithThread; implementation {$R *.dfm} uses uMyThread, uFormMain; var LArrThreads: TArray<TMyThread>; function MyCanClose: Boolean; begin result := false; // while (Length(LArrThreads) > 0) do begin // trying kill the thread... LArrThreads[0].Terminate; LArrThreads[0].WaitFor; LArrThreads[0].Free; // // if ok, remove it from list delete(LArrThreads, 0, 1); end; // LHowManyThreadRunning := Length(LArrThreads); result := LHowManyThreadRunning = 0; end; procedure TFormWithThread.Btn_RunThreadClick(Sender: TObject); var i: integer; begin i := Length(LArrThreads); LArrThreads := LArrThreads + [TMyThread.Create(MyUpdateButtonCaption)]; // Memo1.Lines.Add(TimeToStr(now) + ' CurrentThread: ' + TThread.CurrentThread.ThreadID.ToString + ' ... App'); // LArrThreads[i].Start; // LHowManyThreadRunning := LHowManyThreadRunning + 1; MyAnimation.StartAnimation; end; procedure TFormWithThread.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin LHowManyThreadRunning := Length(LArrThreads); CanClose := LHowManyThreadRunning = 0; // if not CanClose then CanClose := MyCanClose; end; procedure TFormWithThread.MyUpdateButtonCaption(const AValue: string); begin Memo1.Lines.Add(TimeToStr(now) + ' CurrentThread: ' + TThread.CurrentThread.ThreadID.ToString + ' ' + AValue); end; end. unit uMyThread; interface uses System.SysUtils, System.Classes, System.Threading; type TMyProcReference = reference to procedure(const AValue: string); TMyThread = class(TThread) strict private FProc : TMyProcReference; FLCounter : integer; FLThreadID: string; protected procedure Execute; override; procedure DoTerminate; override; public constructor Create(const AProc: TMyProcReference = nil); overload; end; implementation { TMyThread } constructor TMyThread.Create(const AProc: TMyProcReference = nil); begin inherited Create(true); // FProc := AProc; FLThreadID := ThreadID.ToString; FLCounter := 0; end; procedure TMyThread.DoTerminate; begin FLThreadID := ThreadID.ToString; // if Assigned(FProc) then TThread.Queue(nil, procedure begin FProc('This is the end! FLThreadID: ' + FLThreadID + ' LCounter: ' + FLCounter.ToString); end); end; procedure TMyThread.Execute; begin while not Terminated do begin FLThreadID := ThreadID.ToString; // if (FLCounter = 100) then break; // if Assigned(FProc) then TThread.Queue(nil, procedure begin FProc('FLThreadID: ' + FLThreadID + ' LCounter: ' + FLCounter.ToString); end); // // simulating a process... "LCounter just for test n process" FLCounter := FLCounter + 1; sleep(500); end; end; end.
  19. I have an FMX project with a StringGrid. I added a TPopupColumn to the StringGrid and added two items in the list. The only way I have found to invoke the TPopupColumn and get to those values is by using the mouse. Is there a way to invoke the TPopupColumn values by using the keyboard. SOLVED: Tab into the column and use the spacebar. HT to Tom Brunberg https://stackoverflow.com/users/2292722/tom-brunberg
  20. Delphi 11.2 patch 2. iOS application raises "EUnsupportedPlatformService with message 'Unsupported platform service: Terminate'" error upon Application.Terminate; or MainForm.Close; There is no problem with Android application. Actually it's [Exit] button functionality in the application. Can someone help?
  21. shineworld

    FMX Style Designer in Syndey

    Hi all. Usually I use FMX styles as they are for Firemonkey applications. I need to check a style contents with the designer (I do that with VCL styles), but I'm not able to find FMX Style Designer in Tools menu. Searching with Google seems that FMX Style Designer is available since XE but I cannot find it. Have you any idea about ?
  22. Type THelpModel = Class(TGridModel); procedure TViewPart.ChangeStringGridComboBoxCurrency(Sender: TObject); begin with TComboBox(Sender), StringGridPartDet do begin THelpModel(StringGridPartDet.Columns[2].Model).DoSetValue(Col,Row, TValue.From<String>(Items[ItemIndex]) ); StringGridPartDet.Columns[2].UpdateCell(Row); end; end; procedure TViewPart.StringGridPartDetCreateCustomEditor(Sender: TObject; const Column: TColumn; var Control: TStyledControl); begin if Column = StringGridPartDet.Columns[2] then begin Control := TComboBox.Create(Self); TComboBox(Control).Items.AddStrings(['GBP', 'EUR']); With StringGridPartDet, TComboBox(Control) do ItemIndex := Items.IndexOf(THelpModel(StringGridPartDet.Columns[2].Model).DoGetValue(Col,Row).AsString); TComboBox(Control).OnChange:= ChangeStringGridComboBoxCurrency; end; end; I have a StringGrid (StringGridPartDet) connected to a DataSet, I have used the attached code to update the currency column with a value from a ComboBox, the value appears correctly in the StringGrid, but does not update the DataSet. AmI missing a step?
  23. I am Moving an Android Project from D10.4 to D11.2 Have Managed to sort Most things but when I go To compile The service that allows Backgound Activity get the following [Exec Error] The command ""C:\Program Files\AdoptOpenJDK\jdk-8.0.242.08-hotspot\bin\javac" -g -Xlint:deprecation -source 11 -target 11 -encoding UTF-8 -d "E:\Data11\M-Planter\MPlanterService\JavaClasses\MPlanterService" -classpath "C:\Users\Public\Documents\Embarcadero\Studio\22.0\CatalogRepository\AndroidSDK-2525-22.0.46141.0937\platforms\android-32\android.jar"; "c:\program files (x86)\embarcadero\studio\22.0\lib\android\Debug\core-1.5.0-rc02.jar";"c:\program files (x86)\embarcadero\studio\22.0\lib\android\Debug\fmx.jar" --system "C:\Program Files\AdoptOpenJDK\jdk-8.0.242.08-hotspot" .\Android\Debug\MPlanterService.java .\Android\Debug\MPlanterServiceProxyInterface.java" exited with code 2. any Ideas or sugestions greatl appreciated Regards Ian
  24. ertank

    Mac address on Android 6.0 or above

    Hello, As of Android 6.0 we cannot read mac address using an app as indicated in here: https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id It seems some people have success reading it on network interfaces. I have seen some java code that I cannot translate and test on an Android 7.0 device. An example with several code alternatives: https://stackoverflow.com/questions/33159224/getting-mac-address-in-android-6-0 1- If anybody can share some working code that would be appreciated. 2- I have no information on how reliable device unique id on Android devices. I have that Chinese made hand held barcode terminal running modified Android OS. I cannot be sure if unique device id is actually globally unique independent of modifications to Android OS. Any information on that or links to read is appreciated. Thanks & regards, Ertan
  25. v4.0.0 Skia library version has been updated from Milestone 98 to 107; [API] Added support for iOS Simulator ARM 64-bit to RAD Studio 11.2 Alexandria or newer. [API] Added TBitmap.CreateFromSkImage; [Framework] Added LinesCount and DidExceedMaxLines properties to TSkLabel; [Framework] Added new splashscreen to our main demo; [Samples] Added ISkParagraph.Visit method; (#136) [API] Rewritted TSkAnimatedImage and TSkAnimatedPaintBox, adding features to have full control over the animation; (#104) [Framework] Some of them are: Start and Stop methods, and AutoReverse, CurrentTime, Delay, Duration, Enabled, Inverse, Loop, Pause, Progress, Running, Speed, StartFromCurrent, StartProgress and StopProgress properties. All these properties and methods are in the Animation property of the TSkAnimatedImage and TSkAnimatedPaintBox. Improved automatic tests; [Tests] Fixed issue in edit controls with emoji or Chinese char; (#159) [Render] Fixed custom fonts on Android deployed to assets\internals that was not automatically loaded; (#153) [Render] Fixed webinar demo splashscreen; [Samples] Fixed exception loading images from stream or bytes; (#111) [Framework] Fixed TSkAnimatedImage exceeding bounds in some WrapMode [Framework] Fixed TBitmap.SkiaDraw issues in VCL; [Framework] Fixed TBitmap.ToSkImage AV in VCL; [Framework] Fixed flicker problem in TSkAnimatedImage in VCL; [Framework] Fixed text print; (RSP-16301) [Render] Fixed TSkAnimatedImage with 90° rotation that fails to play; [Framework] Fixed high DPI issues of TSkLabel in VCL; [Framework] Fixed high DPI issues in VCL demo; [Samples] Fixed SkRegion.IsEqual; [API] Fixed link with runtime packages; (#163) [Setup] Fixed big GIF issue; (#118) [API] Fixed wrong pixel format on Android in Delphi 10.3 Rio; [Render] Minor improvements and fixes. Skia version: 107.0.0 Compatibility break We are in continuous development, so some updates will bring compatibility breaks. So, pay attention to version numbers, we use semantic versions (for major versions there is some compatibility break). See some breaking changes in this version: No longer use TSkAnimatedImage.Enabled to start or stop an animation. Now use TSkAnimatedImage.Animation.Enabled. The class TSkTypefaceManager is deprecated in favor to TSkDefaultProviders; Several changes in API (Skia.pas); Supported platforms RAD Studio 11 Alexandria: All platforms RAD Studio 10.3 Rio or newer: Windows and Android RAD Studio XE7 or newer: Windows Github: github.com/skia4delphi/skia4delphi Website: skia4delphi.org
×