Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 08/03/24 in Posts

  1. Alexander Halser

    Loading and Saving PNG into TBitmap changes the image

    The Windows D2D implementation in FMX in FMX.Canvas.D2D.pas always assumes a premultiplied alpha. This is probably the source of the problem. Anders Melander can perhaps comment on that with more expertise than I have. D2D1_ALPHA_MODE (dcommon.h) - Win32 apps | Microsoft Learn One option to solve it would be to write a TCustomBitmapCodec for raw PNG data and load/save your PNGs through this codec exclusively. If SKIA is an option for you, install SKIA and enable it for your app. SKIA effectively implements its own canvas and its own image codecs, leaving your PNG file as it is. I tested your example image with SKIA enabled and the bitmap stays the same, no matter how often it is loaded and saved. Obviously, the SKIA codecs do a better job.
  2. Vandrovnik

    Firebird database on Android

    A few notices: If you try Firebird Embedded on Android 14, use snapshot build (5.0.1). Version 5.0.0 crashes there (4.0.4 also). https://github.com/FirebirdSQL/firebird/issues/8110 I have used their .aar file - renamed to .zip an extracted files manually. In Deployment manager: All files from .aar\jni\arm64-v8a -> library\lib\arm64-v8a\ Files from .aar\assets\firebird I put in one .zip file, which is in Deployment Manager put to assets\internal In runtime I unzip them to tPath.Combine(tPath.GetHomePath, 'fbasset') In runtime, before using FB client, I set environment variables: SetEnvironmentVariable('FIREBIRD_TMP', TmpDir); SetEnvironmentVariable('FIREBIRD_LOCK', TmpDir); SetEnvironmentVariable('FIREBIRD', tPath.Combine(tPath.GetHomePath, 'fbasset')); Firebird client is then loaded from: tPath.Combine(tPath.GetLibraryPath, 'libfbclient.so')
  3. Good afternoon, dear Delphi developers! I would like to share with you information about our FGX Native product for Delphi, which can be an excellent working tool for you to create cross-platform mobile applications. P.S. I will be happy to answer any of your questions. What is it? FGX Native is a framework developed from scratch, completely independent of FMX/VCL, allowing you to create native mobile cross-platform applications for Android/iOS and using native components provided by operating systems. Key Features: Smooth animation. All visual components have smooth animation. Native view. The components look familiar to the user of the mobile OS(Android и iOS). Support of Right-To-Left languages. Modern approaches in development. Links: Official site: https://fgx-native.com/en/ Customers applications: link For whom? Currently, the world of mobile development is experiencing rapid development. Many services and desktop applications are duplicated in one form or another on mobile devices, and this is not surprising, because according to statistics, about 59% of people in the world own smartphones. This is a huge market that is constantly growing. Unfortunately, mobile development is quite different from desktop development in terms of building a UI. Therefore, in FGX Native, we focused exclusively on the specifics inherent in mobile operating systems and deliberately abandoned support for desktop systems. Our product can be useful both for Delphi developers who just want to enter the world of mobile development, and for those who have ready-made projects created using FMX and are faced with certain limitations of the FMX framework. At the moment, we already have several completed successful translations of projects from FMX to FGX. We are expanding our cooperation with educational institutions and already supply free licenses for computer classes for teaching mobile development with FGX Native. Features FGX Native is built entirely from scratch using only RTL. The delivery includes a rather impressive number of ready-made components for solving problems of different plans. Form Designer The form designer is the cornerstone for convenient visual and really fast mobile app development. The convenience of the designer and the set of visual components depends on how quickly you will be able to add new functionality, make quick visual edits or just check out an idea. Therefore, we have developed our own unique form designer for FGX Native. It offers a large number of features that will definitely accelerate the development of the interface of your future application and make it visual and enjoyable. FlexBox Alignment System The world of mobile devices is characterized by great variability in screen sizes. It is often necessary to use different placement of elements on screens for different orientations and sizes of screens. The classic Delphi alignment system was created in an era when mobile development did not exist in principle, so it is not particularly suitable for these purposes. In FGX Native, we abandoned the classical system in favor of the modern FlexBox, which has already become the de facto standard in various programming languages and layout. As a result, we can make complex, adaptive markup options directly in the designer and, as a rule, without a single line of code. Below are the options for marking up the login and password entry form. As you can see, in portrait and landscape orientations, the form elements are arranged differently. And all this is done by means of the FGX Native designer without a single line of code! List Lists are one of the key components in mobile development. They replace the usual approach with grids, trees, etc. The elements of the list have truly amazing possibilities for customizing the appearance through the use of different styles, which in turn are configured directly in the designer in a way familiar to everyone. It is worth mentioning that the library is supplied with a set of preset styles according to the Material Design concept (https://material.io/components/lists ) which can be selected with one click. Lists support multi-column display mode, dragging and dropping items, and much more. But the most important advantage is that lists maintain smooth operation with thousands and even hundreds of thousands of elements with complex markup due to their internal architecture. Containers A separate part is container components, which are designed to group components and display them in a special way. Among such components, sliding panels for menus. Sliding pages from the bottom, grouping components with scrolling and much more. Camera and barcode scanner One of the applied areas of mobile application development is warehouse accounting. And here you can not do without a barcode scanner. We have already developed it for you. And all you need is to connect the scanner component to the camera. Barcode generator What if you want to generate your barcode. There is nothing easier, the TfgBarcode component allows you to generate a barcode of a popular format. Identification (Facebook, Google Sign In, VK Login, Apple ID) When your customers are working with the application, you may want to simplify the registration and authorization process for them. This will avoid filling out long user registration forms and improve the UX of your application. For this purpose, it is usually suggested to use third-party identification services, such as Facebook Login, Google Sign In, Apple Id and others. In the latest releases of FGX Native, we have added components that allow you to do this. Advertisement If you plan to earn money on your application by placing ads, then we have Google AdMob support for you (Android, iOS will be later). At the same time, you can embed banners with ads in your application or make a full-screen ad. Animation Almost any modern mobile application uses animation to one degree or another to improve the UX. FGX Native offers an API for performing native animation of components. In addition, we have developed ready-made animation templates that you can call with one line of code. And if you want to make complex vector animations, then we have an Airbnb Lottie for you with animation support from Adobe After Effect. Lottie-Demo-Sample.mp4.666bf68c84eed5fb76042e54a385ab9a.mp4 Google Pay and Apple Pay FGX Native supports two payment systems Google Play (Android) and Apple Pay (iOS, at the testing stage). Therefore, if you want to pay for an order in an online store directly in the app, you can also do it. Push-notification Push notifications are used to send client notifications from your server. These are the messages that appear in the notification center of your device. We support two types of push services FireBase (Android) and Apple Push Services (iOS). They are implemented on the basis of RTL System.PushNotification base. However, for our users, we provide a separate component that greatly facilitates the work with push notifications on the side of the mobile application. Digital signature Imagine that you have developed an application for the delivery of goods for couriers. They deliver the goods to the customer and they need to get confirmation from the customer that the order has been delivered. We have developed a component for entering a digital signature. Just let the customer leave a signature on the courier's phone screen. Localization Almost any international application primarily supports more than one interface language. Therefore, the application should be able to translate its interface on the fly in a good way. For these purposes, we supply an extension for the library in the form of a UI localization component. Taking photo And what if you need to take a photo or get a photo from the user's gallery? To do this, we have a special API for getting photos, both in a file and in TfgBitmap from camera or system gallery. Map If mapping services are important to you, then the TfgMap component is included in the library, which allows you to display system maps with the ability to add markers, polylines, lines and etc. Also, for Android, you can even specify your own style for displaying the map. Assets Special attention is paid to optimizing the use of different types of resources: Images, Fonts, Files, Lottie animation and etc. We abandoned the idea of storing resources in dfm and developed our own solution for centralized storage of resources. You can easily add any files, without having to know where the file is physically located and without having to suffer with the Deployment manager. In the same place, you can immediately color the uploaded images and apply the 9-patch effect. Material Design Icons How often have you encountered the need to search for icons for your application? In order not to spend a lot of time searching for suitable standard icons in your application, you can add them from Google Material Icons pack directly from Delphi in a couple of clicks. Image caching One of my favorite features is optimization the use of images in memory. Imagine that you have a regular news application with an endless list of news with a preview image displayed. The mobile device is limited by the size of the available RAM, so it will not be possible to load all the images into memory. The application will simply crash due to lack of memory. To avoid this, the developer usually needs to come up with his own system for uploading/uploading images when it is really needed. In FGX Native, we have already provided for this, and if the image is not used, it will be unloaded from memory automatically and reloaded only when it is really needed. Asynchronous image loading Separately, it is worth noting the task of displaying an image posted on the Internet. A typical way is to place images on the Internet, and dynamically upload them in the application in runtime. With just two lines of code, you can queue an image upload by URL from the network, without thinking about how to output it to the component when it is uploaded. TfgAssetManager.Current.AddBitmapFromUrlAsync('MyImage', 'http://data.fgx-native.com/images/photo-demo.jpg'); fgImage1.ImageName := 'MyImage'; Video Player We also provide video component for playing video from file or from stream. Web Browser If you would like to display web content, you can use WebBrowser component with supporting Basic-Auth, Javascript and SSL error handling. Popup In some cases, you may need to display contextual content. In this case, the Popup implementation is useful. Graphic components A set of primitive components is included in the delivery: rectangle, line, ellipse, circle, SVG Path and etc. They can also be used to build an interface. Canvas For those who do not have enough standard components, you can manually draw graphs or create your own image in the TfgBitmap buffer. Gestures The library supports standard types of gestures (Tap, Double tap, Long tap and Zoom). Standard components Of course, do not forget about the other standard components: buttons, text input fields, date pickers, checkboxes, indicators and much more. Additional tools We also supply a set of auxiliary tools that will be useful in mobile development. Android Log viewer When you are developing Android application, it's quite often, when you need to look at the system log for examination possible issues. Android API Delphi headers generator If you would like to use third-party Java libraries, we have our own tool for generating header files for Java. It is worth noting separately that we have developed our own Android-Delphi bridge, which is more convenient to use than in RTL and offers a number of additional features.
  4. Yaroslav Brovin

    FGX Native - crossplatform mobile native development

    Good evening, dear Delphi developers. A lot of time has passed since our latest news on this forum, but we have not been idle and are happy to share new products with you. 1. SVG support We wrote our SVG render from scratch. And now you can use SVG in your applications. https://forum.fgx-native.com/blogs/entry/61-поддержка-svg-в-11550/ 2. Authentication services Apple ID, Facebook Login, Google Sign In, VK Login We have developed a set of components for performing authentication using popular services Apple ID, Facebook Login, Google Sign In, VK Login 3. Maps Maps remain an important component for our clients, so we have expanded their support and added the ability to use custom tiles or ready-made tiles in maps (for example, OpenStreetMap) https://forum.fgx-native.com/blogs/entry/60-провайдеры-тайлов-в-tfgmap-с-11530-openstreetmap/ 4. Firebase Push notification We have expanded Firebase support and implemented push notifications not only for Android, but also for iOS. In addition, we have developed a component for simplified work with push notifications. With it, you can easily get a device token and track work with uvedoleniyamit. https://forum.fgx-native.com/blogs/entry/55-firebase-push-уведомления-на-ios-с-11520/ 5. Application Analytics We have also added new components to collect analytics of the use of your application using Firebase Google Analytics. https://forum.fgx-native.com/blogs/entry/57-firebase-google-analytics-с-11530/ 6. New fast build system for Android We have integrated a third-party Android application build system. Thanks to this, it was possible to speed up the build time of the application, speed up the restart after making changes, and much more. https://forum.fgx-native.com/blogs/entry/52-новая-система-сборки-android-приложений-со-значительным-приростом-скорости-🔥/ 7. Full AAR support It's no secret that there are many more ready-made solutions for Android in the Java/Kotlin world. Therefore, if you are not limited to using only native code, then now you can easily connect ANY JAR/AAR library and even just specify a dependency as a string without having to download libraries and all dependencies, etc. https://forum.fgx-native.com/blogs/entry/56-интеграция-android-библиотек-просто-и-быстро-с-11520/ 8. Yandex Mobile Ads We have also added another Yandex Mobile Ads advertising platform to display ads in your apps. 9. Share We have added a new service to be able to send your data to other mobile applications - quickly, simply and conveniently. 10. Working with photos We have improved our tools for selecting photos from system applications and added the possibility of multiple photo selection. At the same time, the implementation has become multithreaded, which allows you to upload a large number of photos and control the upload process without blocking the UI. 11. Video recording We have developed a cross-platform solution for video recording from a phone camera. 12. In-app purchases Now our users can organize in-app purchases, both for iOS and Android, in order to sell digital content in your app. And if you need built-in payment methods, then you can use the ready-made solution for ApplePay(in testing) / GooglePay. 12. Images Additional methods for working with images Tint Crop Flip Rotate Thumbnail EXIF orientation Luminance https://forum.fgx-native.com/blogs/entry/63-новые-методы-по-работе-с-tfgbitmap-и-exif-в-11600/ 13. Canvas Canvas matrix transformation, canvas state. 14. Resource support We have improved our resource designer and now you can generate the necessary images/stubs for rapid prototyping of your mobile application in a couple of clicks. https://forum.fgx-native.com/blogs/entry/47-анонс-11440/ 15. Viewing Android system logs We have improved our tool for viewing system logs in Delphi. https://forum.fgx-native.com/blogs/entry/49-анонс-11450-и-улучшение-android-log-viewer-ios-simulator-arm-64-bit/ 16. Barcode scanner We have added support for new barcode formats: InvertedDataMatrix for Android. Codabar for iOS. 17. List component For our super fast list we have added: Advanced selection. Allows you to animate and independently implement the visual selection of elements Horizon mode 18. Header file generator for Java/Kotlin code We have improved our generator: AAR support Displaying information in headers about when the type/method was introduced, and in which version of Android is outdated. Intelligent processing of circular dependencies related to the feature of the JAVA batch structure Kotlin library support It has never been so easy to connect any android library and use it in Delphi. 19. Dark theme We have improved support for the dark theme for Android/iOS Tracking the change of the system theme Getting information about the system topic. Automatic change of the style of the system status bar depending on the content of the form https://forum.fgx-native.com/blogs/entry/59-улучшенная-поддержка-темной-темы-с-11530/ 20. Backward compatibility with RTL Java bridge Especially for FGX Native, we have developed a module that allows, if necessary, to simplify migration from the RTL bridge to ours. In addition, we are correcting errors that exist in older versions of Delphi in RTL Java Bridge. 21. Demo samples We provide more than 100 demo samples. We performed presentation at Embarcadero CodeRage 2022.
  5. Yaroslav Brovin

    FGX Native - crossplatform mobile native development

    Hello guys, I'm glad to share with you information about FGX Native presentation on big conference Italian Delphi Days 2022. Don't miss, It will be interesting speech about new features, which we added since previous Italian Delphi Days presentation. FGX: the Evolution of native mobile applications Italian time: 16:30 - 18:00 We also had webinar about creating prototype of mobile application based on UI ready design with FGX Native. As an example, we took an application that allows you to develop useful habits. Habbit Builder.mp4
  6. Yaroslav Brovin

    FGX Native - crossplatform mobile native development

    Hello, The new application - The personal account of the client of the Internet provider. It provides information about Internet plans, Online-TV services and etc. Allow to pay from application and add new subscriptions and services. Telecom group (compressed).mp4
  7. Yaroslav Brovin

    FGX Native - crossplatform mobile native development

    One client just developed mobile application for railway company. This is a reference book with documentation and animation. railway.mp4
  8. Yaroslav Brovin

    FGX Native - crossplatform mobile native development

    Hello, A few thoughts about FMX integration: FMX uses style concept, so it has to load all visual components on startup. Otherwise, your style will not be deserialized. This means that any FMX units will result in the full addition of FMX. FGX Native has a fully written backend from scratch and module architecture. This means that if you don't use something, it won't even be linked. Therefore, only the components and classes involved get into the executable file. FMX Backend is built on integration with NativeActivity and GPU. And for using native components (FGX Native is about native components) it's a bad bunch, which pulls all the problems. Therefore, the decision not to use FMX was fundamental and key. Not because FMX is bad, it's just that the nature of the products is different. Therefore, yes, on the one hand, the lack of integration with FMX may seem like a problem. But independence from FMX, just in the end, gives more opportunities for performance, the ability to build a UI and the potential to expand and support third-party solutions. It's enough just to look at ready-made applications or watch demo projects to understand what is at stake. This week I updated Trial version to 1.14.0.0, so it now corresponds to the latest version of the library in principle. So you can check everything again on 11.0 About supporting external libraries Specifically, so that users do not feel deprived of the functionality that exists, including in Kastri. We are adding our own implementations of the most popular services: payments, popular identication services, scanners, barcode generators, fast camera and etc. We are gradually adding the requested functionality from release to release. Adding any external non visual library to FGX Native support is not particularly difficult. Because it has similar Android API to FMX Activity. There are more advanced types of notifications about the main events in the Activity. In addition, despite the fact that I have developed my bridge to use the Android API, this does not prohibit the use of a regular bridge from RTL. Therefore, the question of adding FGX Native support is not really a problem. Also, some clients asked for help, for example, to port some libraries from FMX to FGX Native, concerning work with NFC, barcode generator, etc. and it was also done. P.S. If you want to add library support to Kastri, we can consider it and I can support you in this job 😉
×