Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 04/14/22 in all areas

  1. 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.
  2. Dave Craggs

    DunitX run code after all tests have run

    Worked it out. Needed to implement OnTestingEnds in TDUnitXNullLogger
  3. Hi there, This is my first message here. I'm here because I have been given all the resources of an open-source project called CoCa (ICC Color Camera Calibrator) which is a software that makes ICC color profiles for cameras and scanners. His author is getting old and cannot continue it so I want to continue. My problem is that I know nothing about Delphi nor programming (other than BASIC that I learnt as a child with my Spectrum 48K) but I do know about camera profiling and color management. This is the original webpage of the project (cloned into my server) so you can see how it looks and works. https://www.hugorodriguez.com/calibracion/coca_web/coca_page.html I'm looking for someone that loves photography and digital imaging and delphy to continue this project. I've been told that a good step would be to convert this code to python or other language that doesn't need so much text (as delphy) to make it more easier to work, but these are not my words so I cannot say. Please if anyone likes this and want to help to this open-source project, contact me. Best regards, Hugo Rodriguez
  4. Anders Melander

    palette for 8 bit greyscale bitmap

    What you're dealing with is an unavavoidable rounding problem and a misunderstanding of what's going on mathematically. The two versions are equally bad. They just distribute the rounding error differently. You want the first palette entry to have a grey-level value of 0 and the last one to have a value of 255 - not 256. Level = 255 * (Index / (Levels-1)) or Grey := i * 255 div (_NumColors-1)
  5. 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 😉
  6. Uwe Raabe

    adding license

    There is a German blog post describing the whole process: Offline Installation und Aktivierung von Delphi, C++Builder und RAD Studio Perhaps you will get the points with a translation to English.
  7. Remy Lebeau

    Delete unicode non-breaking space

    That is because the original data is encoded in UTF-8, but once it is loaded into your string, it is no longer encoded in UTF-8, it is encoded in UTF-16 instead. $C2 $A0 are the UTF-8 bytes for the non-breaking character, whereas $00A0 (decimal 160) is the UTF-16 value of that same character.
  8. DavidOp

    Delphi Binance API program

    I use Delphi websocket to get data from Binance. uses IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdWebSocketSimpleClient; type ... procedure lSWC1DataEvent(Sender: TObject; const Text: string); private ... public ... procedure TForm1.lSWC1DataEvent(Sender: TObject; const Text: string); begin Form1.smemo1.Lines.Add(text); end; #use these parameters to avoid SSL3_READ_BYTES:sslv3 alert handshake failure procedure TForm1.Button1Click(Sender: TObject); var lSWC:TIdSimpleWebSocketClient; begin lSWC := TIdSimpleWebSocketClient.Create(self); lSWC.onDataEvent := lSWC1DataEvent; //:= self.lSWC1DataEvent; //TSWSCDataEvent lSWC.AutoCreateHandler := false; if not lSWC.AutoCreateHandler then begin if lSWC.IOHandler=nil then lSWC.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(lSWC); (lSWC.IOHandler as TIdSSLIOHandlerSocketOpenSSL).SSLOptions.Mode := TIdSSLMode.sslmClient; (lSWC.IOHandler as TIdSSLIOHandlerSocketOpenSSL).SSLOptions.Method := sslvSSLv23; (lSWC.IOHandler as TIdSSLIOHandlerSocketOpenSSL).SSLOptions.SSLVersions := [TIdSSLVersion.sslvSSLv23]; end; lSWC.Connect('wss://stream.binance.com:9443/ws/btcusdt@kline_15m'); (lSWC.IOHandler as TIdSSLIOHandlerSocketOpenSSL).PassThrough:=false; end; added this .pas to my Project: https://github.com/arvanus/Indy/blob/WebSocketImpl/Lib/Core/IdWebSocketSimpleClient.pas
  9. PeterBelow

    Delete unicode non-breaking space

    You are approaching this from the wrong angle. The data you showed pasted into notepad looks like a semicolon-separated CSV format. To dissect this you can use TStringlist. Something like this: var LText, LLine: TStringlist; i: integer; begin LText := TStringlist.Create; try LText := Clipboard.AsText; // This splits the data into lines LLine := TStringlist.Create; try LLine.StrictDelimiter := true; LLine.Delimiter := ';'; for i:= 0 to LText.Count - 1 do begin LLine.DelimitedText := LText[i]; if i = 0 then ProcessHeaderLine(LLine) else ProcessDataLine(LLine); end; finally LLine.Free; end; finally LText.Free; end; end; Untested, just typed into the post directly. The two Process routines are something you would write yourself. For each the passed stringlist should hold 5 lines, the column captions for the header and the column values for the data. If you really want to replace a non-breaking Unicode space it is a single character with the code #$00A0, not a two-character string. Your hex viewer probably pastes the clipboard content as ANSI text, while Notepad pastes it as Unicode (UTF-16).
×