Noutați

Appercept’s New AWS SDK For Delphi, Available With RAD Studio And Delphi Enterprise and Architect

Embarcadero today introduces a brand new first-class AWS client library for Delphi, soon to be included in the Enterprise and Architect editions of Delphi and RAD Studio. Given the relevance of Amazon Web Service cloud infrastructure in today’s IT landscape, including an AWS library in our product offerings delivers substantial added value to our customers. The Agreement With Appercept Embarcadero has reached a two-year exclusive distribution agreement with Richard Hatherall, the UK-based owner of Appercept, on the company’s “AWS SDK for Delphi”. The deal includes an initial preview, with additional features to be released over time. The AWS library and updates will be available via GetIt, and limited to customers on Enterprise and Architect with active update subscription. Customers using the AWS library also get support by Appercept through Embarcadero’s own support team. The library does not currently support C++Builder, but there are plans to provide C++ support for the AWS SDK in the future. Why An AWS SDK For Delphi Amazon Web Services (AWS) is the world’s leading cloud service today, with well over 50% market share. AWS offers many services, from storage and orchestration to AI services and insights, and it’s leading a transformation in the industry. The availability of an easy-to-use, high-profile AWS SDK for Delphi from Appercept will make it much easier to use AWS cloud services in Delphi client applications, both for desktop and mobile, and will be particularly useful when building server applications, especially if they are deployed in the AWS infrastructure. Closer Look: What to Expect From the Appercept AWS SDK for Delphi The Appercept AWS SDK for Delphi makes heavy use of modern language and framework features, from PPL (Parallel Programming Library) to anonymous methods for async operations, as required by a good REST client framework. This library offers direct mapping to the AWS APIs, starting with a few services like storage (S3) and notifications (SNS) plus a solid support of user accounts and access permissions. Not only does this SDK make the APIs available as direct calls (mapped internally to Delphi’s HTTP client library as needed), it also offers many easy-to-use constructs and data structures, so that the most common AWS operations will require a very limited amount of code while allowing developers to focus on their business logic. The library comes with extensive documentation and demos, making it easy to embrace. It also ships with full source code, enabling users to learn how the solution works and debug it directly within their applications. Want a quick demo? This is all you need to write to have a list of S3 buckets (or folders): uses AWS.S3; var  S3Client: IS3Client; begin  S3Client := TS3Client.Create;  var Response := S3Client.ListBuckets;  for var BucketName in Response.Buckets do    ListBox1.Items.Add(BucketName); uses AWS.S3; var  S3Client: IS3Client; begin  S3Client := TS3Client.Create;  var Response := S3Client.ListBuckets;  for var BucketName in Response.Buckets do    ListBox1.Items.Add(BucketName); What To Do Next If you missed the “Introducing Appercept’s AWS SDK for Delphi” webinar on the 15th of December, you can catch the webinar replay soon after. We’ll post the link here as soon as it’s available. We will also be posting additional information as new features are added and coverage of AWS services grows. For questions, inquiries and additional information please contact me (Marco Cantu).

Read More

5 Ways To Modernize Your Data Access Pipeline

Building database applications with RAD Studio (Delphi & C++ Builder) gives the best experience for developers. For instance, if you want to connect to a database, just drop a database connection component into the project and select the source of the data. Then open the LiveBindings designer and link the database fields to the UI controls and that is it! If you want to connect to a remote database you can make use of the REST Client Library and Rad Studio’s incredibly powerful REST Debugger. Perhaps you need to connect Azure or AWS? That is covered too – just drop the Cloud Connection Provider component. configure it securely, and everything works right away. What sort of topics are covered in this article? We’re going to take a whistle-stop tour through some of the ways using Rad Studio Delphi and C++ builder can make life much easier for developers looking to work with database servers and data. What is FireDAC? How can I convert my programs from the Borland Database Engine BDE to FireDAC? How can I connect to Amazon Web Services and Microsoft Azure with Delphi or C++ Builder? What is the Embarcadero REST Client Library? How do I bind a data source to UI controls in seconds? What is FireDAC? FireDAC is a multi-device data-access library that comes with RAD Studio Delphi and C++ Builder. One thing you can do with FireDAC is talk to SQL databases. You can also make use of an ODBC connection to talk to ODBC data sources.  With its powerful universal architecture, FireDAC enables native high-speed direct access from Delphi and C++Builder to InterBase, SQLite, MySQL, SQL Server, Oracle, PostgreSQL, DB2, SQL Anywhere, Advantage DB, Firebird, Access, Informix, DataSnap, and more, including the NoSQL Database MongoDB. FireDAC features: An enterprise-grade data access engine A unified API Has high-performance Data Access Where can I learn more about using FireDAC? How can I convert my programs from the Borland Database Engine BDE to FireDAC? On the FireDAC page, there is the BDE to FireDAC set of steps that will take you through taking the existing source code, your existing forms in Delphi, and running refined utility which is per-regular expression search and replaces utility. Also, there is a script for migrating BDE that will convert the forms and source code for Delphi into use FireDAC whether it is in data modules on your forms or in your source code for database connectivity.  In general, the FireDAC components have a high compatibility level with the BDE data access components. This includes the syntax and semantics of the properties and methods in the FireDAC and BDE. You can learn some other parts which are different in Migrating BDE Applications to FireDAC. Check out this tutorial to learn more: How can I connect to Amazon Web Services and Microsoft Azure with Delphi or C++ Builder? Delphi & C++ Builder come with Cloud components that allow you to easily utilize cloud services from Amazon Web Services and Microsoft Azure. As you can see, these two core components can be used to connect to AWS or Azure. There is a really helpful sample project called CloudExplorer, that familiarizes you with how to: Initialize Connection Get Selected Account Update Cloud File List Get Selected Cloud File Upload Selected Local File Download Selected Cloud […]

Read More

High DPI support for all FNC UI Pack Components

High DPI In this update of the TMS FNC UI Pack the main focus was the implementation of high DPI in our controls. Some components already had high DPI support since the previous update. Now all of our components are scaled to the monitor and have clear lines and fonts. This is implemented in design-time for Delphi 11 and in run-time from 10.3 onwards due to the integrated support. Design-Time Editors Introduced in the previous update are the improved editors which have an adjustable theme, high DPI support and available in Delphi and TMS WEB Core for Visual Studio Code. Planner Mode Editor A new addition to the editors is the TMS FNC Planner Mode Editor, which is now registered in design-time. It is possible to configure the mode and the different positions and resources of the planner. The editor is accessible via the mode property or by the configure option in the context menu via the right-click. This update also addresses different fixes and some smaller new features to the product which can be found in the release notes.

Read More

Why You Should Be Fearless When Developing With Delphi

I keep telling anyone I can, Delphi is superb language for developing applications for all platforms, desktop, mobile or the web. Delphi can make gorgeous apps for the desktop such as Windows, Linux or macOS and yet is just as capable for mobile devices such as iOS and Android. You can create web apps with Delphi – not just simple pages but fully capable involved creations which contain all the power and functionality that is possible on the modern web. But don’t just take my word for it – take a whizz through any of the articles on this blog, watch sessions from DelphiCon 2021 and the Desktop First Summit or visit the wonderful DelphiBooks website and take your pick from the many authors on there. In fact, this year has proven to be a bit of frenzy when it comes to new Delphi books, driven in part by Packt who are fast proving to be major champions of books relating to Delphi. There’s even an updated Delphi Alexandria 11 version of the Delphi must-have Object Pascal Handbook by Marco Cantú which you can download for free. It’s Packt who once again are the publishers behind the most recent addition to the Delphi literary library: Fearless Cross-Platform Development with Delphi by Delphi MVP David Cornelius. As soon as I read chapter rundowns during the run up to the release period, I pre-ordered this book. It was worth every cent. Here’s my review. Why Fearless Cross-Platform Development with Delphi? I only have one issue with David Cornelius’ book “Fearless Cross-Platform Development with Delphi” and it’s the title. This book should have been called something like “how to do almost anything you could ever want with Delphi” because that’s exactly what this book is. A handbook on how to write modern applications using the Delphi language so that they look, work, and behave nicely on almost any computer or device you can think of. It’s an opening opus of quite spectacular proportions. It’s a love story of the power and flexibility of the Delphi language. It’s a gripping tale of diving into a sea of development tasks and possibilities and emerging with the pages dripping with tips, tricks and techniques which cover almost absolutely anything you could want to do as an application developer writing apps that can work on desktops, mobile and even the web. I struggle to believe this is David’s first book. If it is then he must be encouraged by us all, and Packt his publishers, to draw on his skills to write some more. “Fearless Cross-Platform Development With Delphi” takes us on a journey from the basics of using the IDE, Delphi’s integrated development environment, project management tips, through more esoteric topics like the command line compiler. After that whirlwind “this is how to do it” introduction, suitable for newcomers to RAD Studio’s development ecosystem, David goes on to give a brief overview of how Delphi’s Object Pascal language came about, emerging as it did from the likes of Apple Pascal and the greatly-loved Borland Turbo Pascal. He takes care to point out how Delphi has continued to evolve from those early beginnings so that it incorporates a whole range of modern programming language features embracing constructs and capabilities to ensure it not only remains technically competitive […]

Read More

Ext JS 7.5 Has Arrived!

The Sencha team is excited to announce the latest release of Ext JS version 7.5. On the heels of the 7.4 release which introduced highly requested features and upgrades including 4 new rich Grid features and quality improvements in both the toolkits, 7.5 includes many quality enhancements, usability improvements and fixes for customers reported issues. This article summarizes improvements and quality fixes in the 7.5 version of Ext JS.   Usability Improvements and Enhancements As part of the 7.5 release, we upgraded the Froala Editor and Font Awesome packages to the latest 5.14.4 version and provided out-of-the-box localization support for new grid features introduced for both the toolkits in 7.4 version, such as Multi-level Grouping, Summaries for groups and total, and Filterbar.  Froala Editor now includes track changes and markdown support. Shown: The list of Font Awesome icons, including the new icons introduced in the latest Font Awesome version (5.14.4). Showcasing the localization support of Hebrew language for new grid features introduced in the 7.4 version like filter bar, and multi level grouping and summaries.   Quality Improvements The 7.5 release includes more than 40 quality improvements for customer reported tickets. Some of the most notable improvements are for the following customer reported issues: The number column in the modern grid doesn’t have a renderer function/method.  Chart tooltips are triggered from the wrong location when innerPadding is used. pullrefresh plugin doesn’t fire load event on the bound store. Remote filters with gridfilter plugin ignores autoLoad: false. So, from 7.5 onwards, autoLoad config for store should be considered when remoteFilter/remoteSort is/are configured. If autoload:false/autoLoad is not configured and filters/sorters are set then the store won’t load until .load() is called initially. If the user wants the store to load automatically, the user has to set autoload:true config. Modern date picker not selecting the correct date. Modern combobox has multiple query issue when forceSelection:false, multiSelect: true and queryMode: ‘remote’.   Please refer to the Ext JS 7.5 release notes, for further details. Modern Toolkit – Grid Filter styling applied to the filtered column.   Version Support Support for Ext JS 7.5 in Sencha Upgrade Advisor, and Sencha Bridges (ExtReact, ExtAngular, and ExtWebComponents) has been provided. Please go to the Support Portal and download the latest versions.   What’s Next? Sencha Tools are following this release and will soon hit the market with the latest 7.5 support*. The work on Ext JS 7.6 is in full swing*! The Sencha team is pacing well on regular quarterly releases, and we are committed to delivering new features, quality, performance, usability enhancements, and improvements all along. Our goal is to provide you with continual support through quality and performance enhancements. If you have any feedback or questions, please drop in a note to us here or get in touch. *Features are not committed until completed and GA released.   Try Ext JS 7.5 We are working hard to serve our community better in all areas. Please do try out our new Ext JS 7.5:  Be sure to follow us on Twitter and our Youtube Channel for updates. Until next time, let’s build great apps and happy coding.    Looking to Upgrade to 7.5? The free-to-use Ext JS Upgrade Adviser tool helps identify code changes required to migrate to the latest Ext JS version. Give it a […]

Read More

Osaka event about using TMS WEB Core and using REST APIs on Dec 18

On 18 December in Osaka, Japan, there is an event for Japanese Delphi developers interested in using TMS WEB Core and creating REST APIs for use from a TMS WEB Core web client application. The event is offered as a hands-on event, where Delphi developers can bring their laptop and work on projects with TMS WEB Core shown during the event and create REST APIs to be used by the web client app. Some more background information about the organizer of the event and the experience with TMS WEB Core and REST API backends can be found here.  It is of course a great opportunity to meet fellow Delphi & TMS WEB Core developers and exchange tips & tricks among each other. We kindly invite everyone to this upcoming event! Event information and registration is available here: https://ishuprog.connpass.com/event/233617/  TMS customers in Japan will receive an email with information for free entry for this event!

Read More

FNC Math Components in TMS Analytics & Physics 3.2

TMS Analytics & Physics library is a set of classes that provide functionality for building powerful math applications with Delphi. In the new version 3.2 of the library, we introduced special FNC math components. The components bring new possibilities to develop and tune your math application in design-time with standard IDE tools. In this article, we’ll consider the base concepts of the FNC math components and provide information on how to work with functions, derivatives, and integrals. All FNC math components are nonvisual. Each component implements some math concept and provides properties to manipulate and tune it in design- and run-time. Let’s consider the following components: TFNCProvider – creates math environment; allows introducing variables and parameters for function evaluations, symbolic derivatives, and integrals. TFNCFunction1D – introduces a symbolic function of one variable; allows evaluating the function for the specified variable value. TFNCDerivative1D – introduces a symbolic derivative of a math expression; allows evaluating the derivative for the specified variable value. TFNCIntegral1D – introduces a symbolic integral of a math expression; allows evaluating the integral for the specified variable value. To begin any FNC math application we first need to put a TFNCProvider component on the form. The component has two published properties: Variables (TVariableCollection) – a collection of variables that can be used as arguments of functions. Parameters (TParameterCollection) – a collection of parameters that can be used in the math environment to build functions, derivatives, integrals, and other math expressions. When you put a TFNCProvider on the form in design-time, it automatically creates a default variable ‘x’ for your math application. You can change the name of the variable or add/delete variables at design- and run-time. For the simplest math application, the default environment with one variable ‘x’ is enough. So, let’s go forward and consider the next FNC component TFNCFunction1D and its properties: Provider (TFNCProvider) – a math environment for the function. Variable (TVariableProperty) – a variable specifying the argument of the function. Formula (TFormulaProperty) – a formula specifying the math expression of the function. Placing a TFNCFunction1D on the form, it assigns the default value ‘x’ to the Variable property. We need to set up the Provider property and the expression for the Formula property, say ‘5*sin(6*x)’ in the Object Inspector. The resulting properties are shown in the picture below:  The function is ready to use. What can we do with it? The first idea is to draw the function and see what it looks like. We have the TFNCFunction1DPlotter component especially developed for this purpose: TFNCFunction1DPlotter – a binding for an FNC function component and an FNC Chart; allows drawing any FNC function on the chart. The component has several published properties that we can use to tune it and show a function on the FNC Chart: Provider (TFNCProvider) – a math environment for the component. Min (TValueProperty) – the minimal value of the variable range to plot the function. Max (TValueProperty) – the maximal value of the variable range to plot the function. PointCount (Integer) – number of points to plot the function. AFunction (TFNCBaseFunction1D) – a FNC function to plot. AssignLegend (Boolean) – if true, assigns the function’s expression to the serie’s legend. Chart (TTMSFNCChart) – an FNC chart to draw the function. First, we need to assign the appropriate Provider property. The Min […]

Read More

Unit testing comes to TMS WEB Core

Let’s come straight to the point. Writing unit tests is a chore and having unit tests is a blessing. We all want to have the blessing, so with integrated unit testing in TMS WEB Core, we tried to minimize the chore. For unit testing to cover real usage scenarios, it is necessary to run the unit tests on the ‘operating system’ where the web application will run, that is the web browser. After all, all TMS WEB Core apps, and thus your code, will run in the browser, will involve dealing with the browser DOM and browser APIs, it is only logical that a TMS WEB Core unit test runs as a web app in the browser. It also means having the ability to deal with a typical web app world phenomenon and that is asynchronous behavior.  Introducing unit testing now integrated from TMS WEB Core v1.9.5.0. To start a new unit test project, create this from the Delphi IDE wizard and it creates a test project with one unit containing one test class with one test method. It allows you to fully focus on writing the test classes with their test methods. In the project manager, it looks like: and the code generated is: Notice in the code the attribute [TestFixture] on the test classes and the attribute [Test] on the test methods. A class can obviously contain as much test methods as you want and you can register as much test classes as you want with a call to TTMSWEBUnitTestingRunner.RegisterClass(). For the feedback when running the test application, use the Assert class.  When running this application, the test application in the browser behaves in the following way: Asynchronous behavior in the browser Now, how can we deal with typical asynchronous behavior in the browser and still test it properly? Well, for any asynchronous behavior in the browser, decorate the test method using it with the [Async] attribute. Then you can use the await() function to wait for the asynchronous response of the call.  This sample code demonstrates this: TMyTestClassUnit1 = class(TObject) published   //This is an async test method   [Test] [async]   procedure TestAsync; end; procedure TMyTestClassUnit1.TestAsync; var   wr: TWebHttpRequest;   res: TJSXMLHttpRequest;   js: TJSONObject; begin   wr := TWebHttpRequest.Create(nil);   wr.URL := ‘https://download.tmssoftware.com/tmsweb/1.json’;   res := await(TJSXMLHttpRequest, wr.Perform);   js := TJSONObject(TJSONObject.ParseJSONValue(res.responseText));   // response value for userId should be ‘1’   Assert.AreEqual(js.GetJSONValue(‘userId’),’1′); end; Testing JavaScript directly When you use external JavaScript libraries that you also want to involve in a test, there are several ways you can do this. You might have an Object Pascal wrapper class for JavaScript objects that you use in your test method but it could be as simple as calling the JavaScript directly from an ASM code block (a block with embedded JavaScript code within your Object Pascal code).  This is a very simple example of directly calling the JavaScript window prompt function to get a user input: procedure TMyTestClassUnit2.TestIntToStr; var   s: string; begin   asm     s = window.prompt(‘Please give your name’);   end;   Assert.AreEqual(‘Bruno’, s); end; The result in the browser when running this test becomes: A video introduction Follow unit testing step by step as our colleague Holger Flick explains in this YouTube video: Get started Go to the next level of […]

Read More

It’s that time of the year again!

Let’s celebrate this holiday season and end the year on a positive note. During December 2021 only, TMS is doing an extra effort and offers everyone special upgrade prices. Upgrade your licenses to TMS ALL-ACCESS bundle today, before 2022 price adaptions! Get full access with:  Easy plan: All current and new products for 1 price! Easy renewal: Yearly renewal only for 495 EUR! Easy install: all products accessible via TMS Subscription Manager tool Easy support: Full online support center access to all areas Easy up-to-date: Early access to product betas Easy learning: Access to TMS WEB Academy Act now! If you would like to continue to benefit from our priority support services and development on new and existing components, we have special upgrade offers for you! Contact sales@tmssoftware.com for the best discount upgrade offer for TMS ALL-ACCESS, depending on your currently purchased products. Take advantage of upgrade discounts now and be safe against future price adaptions!Please note this offer is valid until December 31, 2021!

Read More

Extjs Tutorial For Beginners: 10 Things I Wish I’d Known Earlier

  ExtJS or Extended JavaScript is a comprehensive JavaScript framework developed by Sencha for building comprehensive web and mobile applications. Today, you can use more than 140+ UI components like calendars, grids, trees, lists, forms, menus, toolbars, panels, windows, and hundreds of different extensions. So are you someone who is looking to build stunning web and mobile UIs using ExtJS? Then stop for a while and read through my introspection about what I wish I had known before starting this awesome journey. Why do I need to know JavaScript and OOP? To get started with ExtJS, you need basic HTML, CSS, and JavaScript programming. But, it is really helpful if you have a general idea of object-oriented programming (OOP) concepts and how to reuse code with them.  Especially if you come from a different programming background like C, C++, or Java, learning Javascript will make things much clearer when working with Ext Js. Finding an ExtJs tutorial for beginners is really helpful. Ext Js takes a Javascript first approach to reuse code with classes, similar to HTML elements and containers. So if you do not understand OOP concepts in Javascript, make sure to brush up your skills with some ebooks, tutorials, or online courses. Why is Sencha Cmd important? Sencha Cmd is the tool that automates your Sencha Ext JS applications from creating your initial project structure to generating deployable apps. Therefore, it is imperative to know about Sencha cmd, what it does and how to use it. Make sure to read through the Sencha Cmd to get familiar with it before starting development. How can I speed up the development? If you want to spend less time on manual coding and accelerate your development, consider using Sencha Architect so that you can build UIs using drag and drop features. The code that automatically generates is optimized for high performance, and you can avoid errors you do when coding manually.  How can I use the MVC design pattern? With a basic understanding of Javascript and OOP concepts, understanding Javascript design patterns is also important. Ext Js uses Model View Controller (MVC) design pattern from which its project structure has been formulated. Although it is not a must to use, I recommend better organizing your project structure. To work with MVC, know where to place your code for your UI, data, and the controller logic in your application. Therefore, it is good to know how  MVC works together to create a working web application in Ext Js.  Where to use the MVVM design pattern? Another design pattern you must be aware of is MVVM which stands for Model–View–ViewModel. Unlike MVC, the execution entry point of MVVC is the view, and it separates the development of UI using a mark-up language. The ViewModel uses the data binding technique to coordinate changes between the data model and the view. So know where to use MVC and MVVM based on what you will develop. Is implementing routing at the beginning a good idea? If you are using forward and back buttons for your website users, you will need to support routing in your application. You can use routing to track the state of your application, but it is not for storing session data. You can also create deep links to directly access a specific […]

Read More