Noutați

Use FNC Pack To Easily Build Powerful Dashboard Apps For Windows, Mobile, And The Web

Technology Partner TMS Software provides a wide range of fantastic components for Delphi and C++ builder. Their components have a modern look and are well optimized. All of TMS’ components have a trial version so you can try out the various features and capabilities inside your own applications before you decide to go ahead with a purchase. Are you looking for cross-platform component set for Windows, macOS, iOS, Android, Linux and the web? Among their other offerings TMS has a component pack called The FNC pack. FNC stands for Framework neutral components. If you use the FNC components you can get your Delphi and C++ programs to target Windows, macOS, iOS, Android, Linux and the web without any code changes simply by using the FNC components which then internally handle the various differences between the operating systems for you. What’s in the TMS FNC Pack? TMS FNC Component Studio TMS FNC Blox TMS FNC Chart TMS FNC Cloud Pack TMS FNC Core TMS FNC Dashboard Pack TMS FNC Grid Excel Bridge TMS FNC Maps TMS FNC UI Pack What is TMS FNC Dashboard Pack? TMS FNC Dashboard Pack contains, perhaps obviously, a set of controls which emulate gauges and dials you might find useful for creating dashboard type visualizations. there are a broad range of very customizable components suitable for visualizations and the components work in VCL and FMX apps as well as TMS WEB Core (TMS’ solution for creating native web applications using Delphi code). You can get a free trial of the component pack from this link: https://www.tmssoftware.com/site/tmsfncdashboardpack.asp What comes with the TMS FNC Dashboard Pack? Let’s look at what components packed inside the TMS FNC Dashboard pack. TTMSFNCWidgetProgress This is a circular progress indicator. You can add your own bitmaps to customize it. Also you can convert it to a continuous progress bar. TTMSFNCWidgetSetPoint This is an indicator with a range. We can set a point and set start, end, center point texts. So according to the value it will show relevant text. For example you could use it to indicate temperatures and get it indicate when a maximum or minimum temperature has been achieved. TTMSFNCWidgetMultiProgress This is a circular progress indicator with multiple values. This indicator can also be heavily customized such as with your own bitmaps. TTMSFNCWidgetDistributionIndicator This component can visualize Pie charts, Donut graphs, Funnel types, Horizontal bar or a Vertical bar indicator. It can show values as percentage or an absolute. You can also customize the footer and legend according to your preferences. TTMSFNCWidgetMarqueeProgress / TTMSFNCWidgetMarqueeContinuousProgress Displays as either a continuous or marquee progress indicators. TTMSFNCWidgetLCDLabel This is seven segment LCD indicator. You can adjust the number of digits and the separator positions. TTMSFNCWidgetGauge You can add any number of needles to this gauge control, custom ranges and many more. TTMSFNCWidgetArrow This is a trending indicator arrow. It will adjust it color according to its angle. TTMSFNCWidgetTrendIndicator How to provide data for TMS Dashboard controls? Adding data is easy. You can live bind to a database or add manually in the design time or runtime. Where can I find demo applications of TMS FNC Dashboard Pack? TMS offers a live demo on its website. To check the live version of the TMS FNC Dashboard Pack web version go to the following link: Live […]

Read More

Customer use case: bringing an FMX app to the web with TMS WEB Core

After years of marketing a Delphi Windows/macOS version of my Star Analyzer program, I found that many clients wanted a web-based program which would run on any device, especially a tablet. They also wanted their data stored in the cloud so that several people could use the program at the same time. The macOS version produced by Delphi was often plagued with macOS incompatibilities, and neither version would run on a tablet. So I decided to take the leap to the web. Another deciding factor was the library of 85 Object Pascal code files that I developed over the years for use with all my programs. I definitely did not want to rewrite my library from scratch. I am rather fond of it. My Star Analyzer program included another 100 Object Pascal code files which all use my library files. So far I have not needed to write a single line of JavaScript or HTML code, and about 80% my existing Delphi code works nicely with the WEB Core components. Some of 20% of new code I had to write was relatively straight forward, and some was a bit tricky. I’ll talk about the tricky parts a bit later in in this Blog. Converting my existing FMX forms to TMS WEB Core As we all know, the components on the forms talk to your code through their event handlers. Theoretically then all I would have to do is create new forms, drop FNC and WEB Core components on the new forms, and use hook them up to most of my existing code.  Not too much work, or so I thought, but it turns out it was not quite that simple. If you look at Star Analyzer for the web you’ll see that it is built around tab controls. Click Data Entry and Data Analysis button and you’ll find there are 15 tab controls on the main form and 18 tab controls on the tabs on the main form. The original program was built around one large and complicated main form that held all the components for all 33 tabs, but the program worked nicely, and was easy to code and trouble shoot. In converting my program to WEB Core, I first duplicated this tab structure using the TTMSFNCPageControl. The new layout looked just like the old layout, and was easy to work with in programming, but it would not compile. It turns out that you can’t compile a program with thousands of components and 33 tabs on one main form. It chokes the compiler. Using Hosted Forms to reduce the complexity of browser pages The solution was to use a TTMSFNCTabSet (which has no pages, just tabs) and to use a hosted form as shown in the TMSDemosWebBasicsFormhosting demo provide by TMS. The text and number of tabs on the main TabSet are changed in code, and the controls that used to be on the tabs are now on a Hosted Form. In the image below the area outside the red box is the main form, while the area inside the red box shows one of the 23 different Hosted Forms. The advantage of Hosted Forms is that each web browser page has a small number of components and on it.  This Case statement below shows how the hosted forms […]

Read More

Upcoming Miletus cross platform support

About 3 weeks ago we released TMS WEB Core v1.7 Ancona. One of the new features was Miletus, our new framework to create desktop applications with TMS WEB Core. It was exciting to see that many of you showed interest in Miletus, so we’ll take a look at what you can expect in the future. What’s coming in TMS WEB Core 1.8 We launched Miletus with Windows 32-bit and 64-bit support, but our goal was already set from the beginning: a cross platform alternative that is based on TMS WEB Core. To make this possible, research work has already started before the TMS WEB Core v1.7 release. We are happy to share that as of today here in the labs, we can already target MacOS and Linux! Starting from TMS WEB Core 1.8 you’ll be able to select the MacOS and Linux target. This will mean that you can create MacOS and Linux applications on Windows without an additional connection to the target systems! After the proper setup, you’ll only need to copy your created application to the operating system of your choice. Keep in mind that for distribution it’s recommended to sign your application and that can only be done on the target operating systems. Why choose Miletus? Miletus is not meant to be an Electron replacement, but rather something to co-exists next to our current Electron support as an alternative to those who want: No NodeJS dependency Smaller executable sizes Less deployed files More broad local database support You can take full advantage of web technologies combined with native operating system level operations: There’s a lot of native functionality exposed already. Access to the local file system, operating system menus and notifications, drag and drop functionality, global shortcuts just to name a few. We are always looking to extend the native support based on your feedback!  You don’t necessarily need a DB backend running, you can easily connect to a local DB file or a cloud DB service just like in a VCL or FMX application! For cross platform targets, the following databases will be supported: SQLite, MSSQL, PostgreSQL, mySQL. This if of course only the beginning, we already have plans to expand the supported DB list! The power of HTML5 and CSS3 is at your disposal. There are a huge amount of libraries and templates available for web applications that you can not only reuse in your Miletus application but with their help you can also create visually more pleasing user interfaces!  And did you know? It’s easy to migrate your existing TMS WEB Core application to Miletus. Watch this hands-on video from our colleague Dr. Holger Flick, who explains the process in detail: After the TMS WEB Core v1.8 release the next step will be to bring Miletus to TMS WEB Core VSC too. We already did some further research in this area, and our results are promising to bring a truly cross platform experience! But that’s not the only long-term goal: based on the feedback we got, we’ll also look to add more DB support!  As mentioned earlier, we have full control over this technology which means we can extend the palette of components and functionalities without depending on 3rd party solutions while maintaining the advantages listed above. We are eager to learn what you’d like to […]

Read More

Ext JS 7.4 Has Arrived

The Sencha Team is excited to announce the release of our Sencha Ext JS 7.4, the latest milestone version update for our best-in-class JavaScript framework.  This release includes many highly requested features and upgrades including 4 new rich Grid features, and addresses 15 customer reported tickets for both Classic and Modern Toolkit. What’s New in Ext JS 7.4   Multi-level Grouping The MultiGrouping grid feature allows the Grid Panel to display the Store data that is grouped by multiple groupers. Here is an example of what it looks like:   Classic Toolkit Feature   Modern Toolkit Plugin Grouping Panel This plugin allows your end-users to drag and drop grid columns to the grouping panel section that is visible above the grid panel. The user can move the dimensions in the grouping panel in which order he/she wants. Classic Toolkit Plugin Summaries for groups and total Quickly define functions for aggregation such as sum, min, max count and more per column. Grouping Summary in Classic Toolkit. Grouping Summary in Modern Toolkit. Filterbar This classic and modern toolkit plugin will add a docked bar under the grid headers and depending on the grid columns configuration, filter fields will be added. Filterbar in Classic Toolkit. Filterbar in Modern Toolkit. New KitchenSink examples Ext JS 7.4 will bring new Grid examples in KitchenSink to help show how to configure and use the new 4 Grid features. Modern – Multi level grouping and Summaries Modern – Grid Filterbar Classic – Multi level grouping and Summaries Classic – Grid Filterbar   Bug Fixes With 15 bug fixes, this release brings a solid set of improvements that the Ext JS users have been waiting for. Please see the Ext JS 7.4 release notes ExtGen and Sencha Cmd ExtGen 7.4 and Sencha Cmd have been updated to support Ext JS 7.4. With Open Tooling, @sencha/[email protected], you can unlock many build features of Sencha Cmd by passing environment options through your npm scripts. These options are then sent to Sencha Cmd via Sencha’s custom webpack plugin. You now can enable the dynamic package loader from your scripts by passing an environment variable through the webpack plugin: –env.cmdopts=–uses. You may recognize this is the same flag used by Sencha Cmd CLI. Sencha’s custom webpack plugin exposes the variable cmdopts to your npm scripts. Within the webpack plugin, this variable is parsed into an array of build options for Sencha Cmd. Building for testing is also available by Cmd Opts. Explore the Building npm based Applications docs for more information.   What’s Next? The engineering team is pacing well on regular quarterly releases and we are committed to delivering new features, quality, performance and usability enhancements and improvements all along.  The work on supporting Ext JS 7.4 in Sencha Architect, Sencha Themer, Sencha Upgrade Advisor and Sencha Bridges (ExtReact, ExtAngular and ExtWebComponents) is in full swing*! Our goal is to provide you with continual support through quality and performance enhancements. If you have any feedback or questions, drop us a note here or get in touch.   *Features are not committed until completed and GA released. Try Ext JS 7.4

Read More

Developer Stories: Ruslan Gospodarencu Explains His E-Schimb Software

Ruslan Gospodarencu started working with version 6 of Delphi. He submitted his software (E-Schimb) as a showcase entry at the Delphi 26th Showcase Challenge and we asked more about his adventures with Delphi. Visit his website at E-Schimb for more details about his software. When did you start using RAD Studio/Delphi and have long have you been using it? I’ve started to use Delphi from version 6 for small projects. From 2010 I’ve started to work on larger projects and switched to Delphi 10.3 when it was released. What was it like building software before you had RAD Studio/Delphi? I have experience working with different programming languages and over the years I have tried to use different IDEs, but none of them have been as convenient and fast in working as Delphi. How did RAD Studio/Delphi help you create your showcase application? Simplicity was the most important reason I chose Delphi. Working with visual elements, the ability to form a unique and visual application design, code structuring, working with databases, are just some of the benefits of using the Delphi IDE. What made RAD Studio/Delphi stand out from other options? From my practice, before starting work on a project I spend a lot of time thinking about how the given system should work so that it contains the established functional of the tasks and fulfills the proposed objectives. When I started thinking about this project, the first thought that was was that the best solution for development is none other than Delphi. What made you happiest about working with RAD Studio/Delphi? The first thing that made me happier was introduction of FireDAC. Before that i’ve been using different components for different databases, but now it is much more easier to achieve the same goals. Then it was livebindings and Firemonkey. I was very excited with all of them. What have you been able to achieve through using RAD Studio/Delphi to create your showcase application? User interface design. Working with database. Comfortable work using messaging system. Reporting. What are some future plans for your showcase application? Multilingual support. Report designer. Use of different databases (PostgreSQL, MySQL/MariaDB, MS SQL, NoSQL) also cloud databases (like Amazon Aurora). Thank you, Ruslan! Check out his showcase entry through the link below Showcase

Read More

A Clean Workflow: Are You A Secret Soaper?

If you’re anything like me you don’t probably put a huge amount of thought into the workflow processes that go into making a bar of soap. In fact, most of the time I don’t think I’ve ever really thought about what soap is actually MADE from let alone how it’s made. I mean, I know there’s something called “parfum” and if I pay a bit extra the soap has a fancy name or advertising which implies I will suddenly smell like the freshest mountain breeze… but even then I only have the most vague idea of the litany of chemical names on the ingredients label and even then if you dumped them onto the table in front of me I’d be lost. Enter the Soapers Imagine then my surprise to find out that there is a whole cadre of people out there who not only understands the difference between Linoleic and Linolenic acid but actually know the whole process and procedures behind making their own soaps. They are affectionately called “soapers“. SoapOpera makes making soap less of a soap opera drama SoapOpera, from Russian Company Eco Electrics, is a Delphi mobile application which helps soapers through the whole workflow process of making their own soaps. Making great use of RAD Studio Delphi’s Firemonkey cross platform FMX framework the beautifully engineered Android app contains tools to assist with ingredient calculations and recipe storage as well as an oils database. It’s a great-looking mobile app with terrific functionality. Website SoapOpera Google Play SoapOpera Screenshot Gallery RAD Studio gets your desktop and mobile apps to market fast – are you ready to clean up?

Read More

Developer Stories: Marco Wobben Discusses His CaseTalk Software

Marco Wobben has been using Delphi since the 1.0 version. He submitted his software (CaseTalk) as a showcase entry at the Delphi 26th Showcase Challenge and we got to talk to him about his Delphi adventure after many years of developing with it. You can check out his software through the CaseTalk website. When did you start using RAD Studio/Delphi and have long have you been using it? I have been using Delphi since version1.0, but to be honest I was a Pascal fan starting at Turbo Pascal 3. Graduated University using Turbo Pascal for Windows. What was it like building software before you had RAD Studio/Delphi? I have built various off-the-shelf applications using the TTT toolkit, before even TVision was available. Building Windows applications using TP for Windows, was doable, but extremely cumbersome. Every form had to be made up with a resource editor, and completely independent of that the code had to match up the resources. Lot’s of trial and error in case of a mistake. How did RAD Studio/Delphi help you create your showcase application? CaseTalk is entirely built in Delphi, I could not have built such a rich client interface without the superb IDE which integrates OOPascal, Components, Live Designers, and neatly integrated debuggers. What made RAD Studio/Delphi stand out from other options? We’ve tried Java using jBuilder for a project once. The IDE worked, but there were so many resource leaks, that we spent a large part of our time working out how to control application memory/garbage collections. Developing in Delphi with full control is amazing and beyond comparison. What made you happiest about working with RAD Studio/Delphi? Delphi is amazing, it allows developers to go high level design to low level api and sql code. It all works as expected and newbies can grow into it at any pace and level. Being able to use ready made components, libraries, API’s, and database frameworks, and even being able to swap one out for another, is just very productive. What have you been able to achieve through using RAD Studio/Delphi to create your showcase application? With Delphi, the speed of debugging, compiling, adding new features is a dream. It is so fast, with a click of a button, the application is compiled and running. The level of service I can give to my customers is amazing. It’s almost an instant delivery from design to hand-off. What are some future plans for your showcase application? Currently, CaseTalk is developed in to a suite of Delphi applications. It contains the Information Modeler, which performs model to model transformations. The CaseTalk manager provides a Teams solution to store multiple models and versions in centralized dbms. The CaseTalk Viewer shows ER and UML diagrams, and now the CaseTalk Portal will be released, which is a Delphi build web service to publish all data to all users in the enterprise. Thank you, Marco! Check out the link below for his showcase entry. Showcase

Read More

Learn how to Sort, Filter, and Group Data with JavaScript and the Ext JS Grid

A much-used term, Data Manipulation is the process of querying modifying data. It refers to the technique of adjusting data to make it more organized and easier to read. While many consider data manipulation difficult and complex, it does not need to be. With the Ext JS Grid, you can easily group, sort, and filter data using JavaScript. In this tutorial, you will find all the details. What is the Ext JS Grid? The “Grid” is one of the centerpieces of Sencha Ext JS. With it, you can easily fetch, sort, and filter a large amount of data. To make this possible, the Ext JS grid consists of two main components – an Ext Data Store full of data and a set of columns to render. How to Group Data with the Ext JS Grid Sorting Data in Multiple Columns Let’s say that you are building a flight booking web application. As a part of the app, you want your users to be able to sort multiple columns including Date, Airline, and Schedule, to help them find the best flights. Take a look at the illustration below: To implement the sort functionality to your web app using Ext JS, simply add the following code: Ext.define(‘MyApp.view.Main’, { extend: ‘Ext.grid.Grid’, title: ‘Reykjavik Flight Departures’,   multiColumnSort: true,   store: {       // Two property sort via store configuration     sorters: [{         property: ‘airline’     }, {         property: ‘destination’     }],       type: ‘store’,     autoLoad: true,     fields: [{name: ‘date’,type: ‘date’,dateFormat: ‘j. M’}],     proxy: {type: ‘ajax’,url: ‘departures.json’,reader: {rootProperty: ‘results’}} },   columns: [{     xtype: ‘datecolumn’,     text: ‘Date’,     dataIndex: ‘date’,     format: ‘M j’,     width: 60 }, {     xtype: ‘column’, // This is the default column xtype     text: ‘Airline’,     dataIndex: ‘airline’ }, {     text: ‘To’,     dataIndex: ‘to’ }, {     text: ‘Scheduled’,     dataIndex: ‘plannedDeparture’,     align: ‘center’ }, {     text: ‘Status’,     dataIndex: ‘realDeparture’,     flex: 1 }],   }); Ext.application({ name: ‘MyApp’, mainView: ‘MyApp.view.Main’ }); Once you understand the basics, you can experiment with the code using Sencha Fiddle. How can I sort Data in a Single Column? Now that you have the multiple column sort down pat, let’s look at another use case. Say that you want your users to find their flights by clicking the SORT ON DESTINATION text and sort the destination data into just a single column: To do it, you have to use the following code: Ext.define(‘MyApp.view.Main’, { extend: ‘Ext.grid.Grid’, title: ‘Reykjavik Flight Departures’, items: [{     docked: ‘top’,     xtype: ‘toolbar’,     items: [{         text: ‘Sort on destination’,         handler: function(button){             // Sort under program control             button.up(‘grid’).getStore().sort(‘to’);         }     }] }], store: {       // Sort via store configuration     sorters: [{         property: ‘airline’     }],       type: ‘store’,     autoLoad: true,     fields: [{name: ‘date’,type: ‘date’,dateFormat: ‘j. M’}],     proxy: {type: ‘ajax’,url: ‘departures.json’,reader: {rootProperty: ‘results’}} },   columns: [{     xtype: ‘datecolumn’,     text: ‘Date’,     dataIndex: ‘date’,     format: ‘M j’,     width: 60 }, {     xtype: ‘column’, // This is the default column xtype     text: ‘Airline’,     dataIndex: ‘airline’ }, {     text: ‘To’,     dataIndex: ‘to’ }, {     text: ‘Scheduled’,     dataIndex: ‘plannedDeparture’,     align: ‘center’ […]

Read More

Managing API Security for AI Programming

Published May 06, 2021 WRITTEN BY ED TITTEL. Ed Tittel is a long-time IT industry writer and consultant who specializes in matters of networking, security, and Web technologies. For a copy of his resume, a list of publications, his personal blog, and more, please visit www.edtittel.com or follow @EdTittel The best tool for securing use of application programming interfaces (APIs) – including those employed for AI programming – may be AI itself. Artificial intelligence is extraordinarily adept at modeling how APIs get used. This means that AI models can continuously examine and analyze API activity. This provides an opportunity to address oversights and issues that policy-based API coverage cannot handle. The timing on this technology is fortuitous, because Gartner predicts that API abuses will represent the most frequent attack vector that results in data breaches within enterprise web-based applications. These days, says InfoWorld, enterprises make use of authentication, authorization and throttling capabilities to manage APIs. Such tools are vital in controlling who accesses APIs within an enterprise IT environment. But these approaches do not address attacks that survive such filtering and scrutiny because of clever attacks embedded within apparently legitimate API calls and uses. Nowhere is this as apt as for AI programming itself, which represents a substantial and increasing share of programming activity within enterprises nowadays. Within an organization, it’s typical to use API gateways as the primary way to call and use APIs. Such gateways can enforce API policies by checking inbound requests against rules and policies that relate to security, throttling, rate limits, value checks, and more. In this kind of environment, both static and dynamic security checks can be helpful, and improve security within the applications they serve. Static Security Checks and Policies Static policy checks work well for quick simple analyses because they do not change with request volume or previous request data. Static security scans work well to protect against SQL injection attacks, cohesive parsing attacks, schema poisoning attacks, entity expansion attacks, and other attacks that depend on clever manipulation of APIs inputs. Static policy checks work when scanning incoming packet headers and payloads, and can match against already-known access patterns associated with attacks. This permits, for example, JSON payloads to be validated against predefined JSON schemas, and can screen against injection attempts of various kinds. An API gateway can also enforce element count, size, and text pattern limits or filters to forestall attempted buffer overflow or illegal command injections. Dynamic Security Checks and Policies Dynamic security checks, as the name implies, work against inputs and behaviors that can change. Typically, this means that inputs must be validating against some notion of state or status, as defined by previous inputs and data associated with them. Most often dynamic checks reflect the volume or frequency of API traffic and requests at the gateway. For example, throttling techniques depend on tracking previous activity volume to limit access when the number of prior API requests exceeds some predetermined (but adjustable) threshold. Rate limiting works in similar fashion – by curbing concurrent access allowed for some particular service or resource. While techniques based on authorization, authentication, throttling and rate limiting can be helpful, they do not address all the ways in which APIs might be attacked. Because API gateways typically serve numerous web services, their attendant APIs may […]

Read More

Detect Real-World Places Of Interest With A Super-Easy API

How cool would it be for your Windows or mobile app to allow travelers to take random pictures at interesting places and retrieve instant useful information about the location they are visiting and the landmarks they can see? In this article we will see how to easily do just that using RAD Studio and Delphi with only few lines of code! Google API – harnessing super computing power the Delphi way Google may be a great search engine but behind all of the search hits and map directions there is a massive stack of super-computing power driving it all. A search on a location in Google Maps quite often shows not only a detailed map and even a street-level view of the area but also, frequently, a series of additional information about the locale such as points of interest, local landmarks and other items about the selected place. Google allows us to tap into that rich enhanced intelligence and apply it not just to maps but to objects and places in images we have taken or have in our data. This is done via the Google Cloud Vision API. Google’s Cloud Vision API – using machine learning to ‘understand’ our images Google Cloud’s Vision API offers powerful pre-trained machine learning models that you can easily use on your desktop and mobile applications through REST or RPC API methods calls. Lets say you want your application to detect objects, locations, activities, animal species, products, or maybe you want not only to detect faces but also their emotions, or you may have the need to read printed or handwritten text, this and much more is possible to be done for free (up to first 1000 units/month per feature) or at very affordable prices and scalable to the use you make with no upfront commitments. Detecting landmarks The option to “Detect Landmarks” is part of the Vision API that we can use to detect and extract information about entities in an image n order to identify a landmark and retrieve its GPS coordinates. We can use RAD Studio and Delphi to easily setup its REST client library to take advantage of Google Cloud’s Vision API to empower our desktop and mobile applications and if the request is successful, the server returns a 200 OK HTTP status code and the response in JSON format. Our RAD Studio and Delphi applications will be able to either call the API and perform the detection on a local image file by sending the contents of the image file as a base64 encoded string in the body of the request or rather use an image file located in Google Cloud Storage or on the Web without the need to send the contents of the image file in the body of your request. How do I set up the Google Cloud Vision Landmark Detection API? Make sure you refer to Google Cloud Vision API documentation in the “Detect Landmark” section – https://cloud.google.com/vision/docs/detecting-landmarks – generally, this is what you need to do on Google’s side: Visit https://cloud.google.com/vision and login with your Gmail account Create or select a Google Cloud Platform (GCP) project Enable the Vision API for that project Enable the Billing for that project Create a API Key credential AI vision, in your apps! Lets say one good friend […]

Read More