Noutați

The 7 Most Misunderstood Facts About Windows 10 Development

Desktop applications are the most productive apps for the majority of ordinary people. From scientific apps to applications which power user’s creativity, Windows desktop applications lead the market. Moreover, the new Windows 11 has big changes that can ramp up Windows applications to the next level. Windows 11 has a gorgeous visual tweaking of the Windows desktop coupled with a rethinking of how areas of the program could be improved to make a user’s life easier. Since you are a developer, it’s very likely you’re interested in Windows app development. The Windows ecosystem for applications is so huge it’s pretty impossible to ignore There are lots of software development tools available for developing Windows desktop applications, but there are misconceptions about the available tools, the development process, and several other common misunderstandings. Here in this article, we will talk you through the misconceptions and what, instead, is the reality.  1. Do you think you have to use a Microsoft framework? Microsoft itself provides a set of tools to build Windows desktop applications in the box like WPF, UWP, WinForms and the new one is the .NET MAUI. Moreover, they have a big community around those tools. So, if you choose Microsoft Windows development tools, you have to follow the .NET framework, and your application is dependent on that. Other options offer more resilience and have decades of stability. For instance, Delphi is one of the leading programming languages for the development of Windows desktop applications for more than 25 years. Delphi has the Visual Component Library (VCL) that offers you to build a classic desktop application that has all the features that you can get from the classic desktop C++ applications. The difference is that Delphi VCL provides high productivity and a set of built-in components that you can design and develop any type of application in a short amount of time. Be sure to check out the applications that Delphi developers building. 2. Are you worried your Windows App will be bloated like Electron? JavaScript rules the web application market and some software development tools provide features and functionalities that offer you to build Desktop applications using JavaScript along with web technologies.  While it provides easy development for experienced web developers, sometimes it consumes high memory and gives less native user experience compared to those native development tools like Delphi, C++ or C#. For instance, Delphi IDE provides all the available tools to create any type of application. These applications run fast and utilize less memory. Moreover, while building apps with Delphi, you do not experience: DLL Hell Bloated EXEs Slow compilation Complex toolchains 3. Do you believe that Windows development is complicated?  If you are having struggles with your Windows development tools, you might have chosen the wrong development or you are not aware of the available functionalities of it. Delphi with Visual Component Library is one of the most productive Windows desktop development platforms in the market. The built-in visual and non-visual components provide flexibility and productivity for the developers. Moreover, the Visual Component Library (VCL), with its ability to map to classic and modern APIs (from Win API to COM-based APIs, to WinRT) and its support for High DPI monitors, Snap Layouts, and modern UI trends – all without requiring a full application rewrite – is […]

Read More

Top 10 How To’s: RAD Studio

RAD Studio 11 Alexandria comes with a wealth of new super features to boost your productivity and give you access to new services and advances capabilities. The best new features include support for High-DPI 4k screens, provisioning for Windows 11, design-time views of styles, and much more. Here are our 10 favorite picks for getting things done in RAD Studio. 1. How to Use New Platform Identifiers in RAD Studio, Delphi and C++Builder 11 Alexandria I was looking through “What’s New in Version 11 Alexandria” and found a cool tidbit about small changes in the RTL for “Platform Identifiers“. Using these platform identifiers can help in your cross platform development projects. Ensuring that all of the platform related identifiers use a consistent naming pattern will also help in your programming efforts. You will find the new platform identifiers in the  System.Classes.pas and System.Classes.hpp files. Note: a few of the platform identifiers are now marked with the deprecated attribute. Keep Reading >>>   2. How to Work With Delphi 11 Alexandria Defines As part of my recent DelphiCon 2021 session, Multi-Platform Explorations using Delphi, FMX, Feeds, REST and More, my example code needed to use IFDEFs for some of the uses statements, variable definitions and code. This blog post contains an example of the use of defines when compiling for Windows (Win32/Win64), macOS, iOS and Android platforms. I also include screen shots of the sample output on each platform. You can download all of my talk’s sample projects using the session links above. The simple Delphi FireMonkey application includes a TButton and a TMemo. In the Button’s OnClick event handler the code outputs information about the platform and the compiler defines for each platform. Keep Reading >>>   3. How to Work With The New VCL Support in Windows 11 With the official release of Windows 11 , Embarcadero has made available some specific VCL styles and I’m offering some coding helpers specific to the new version of the Microsoft desktop OS. More will come over time. After the announcement earlier this year, Microsoft has now officially released Windows 11 last week. Despite some issues running the new operating system on older computers due to new hardware requirements, the new version of Windows offers a nicer user experience and working environment, while maintaining a very high degree of compatibility with existing applications, including those written with Delphi and C++Builder. We are expecting a lot of end users will move to Windows 11 in the coming months. Keep Reading >>>   4. How to Use Appercept’s New AWS SDK For RAD Studio Enterprise and Architect 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 are 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. Keep Reading >>>   5. How to Deploy The New RAD Server Lite (RSLite) in RAD Studio 11 As part of the RAD Studio […]

Read More

How Do Delphi And Electron Line Up on Development Time? Benchmarking Study

Development time is a vital component of any software development project, even before it starts. It relies partly on development tools and partly on developer productivity, and heavily influences cost, upgrade and maintenance estimations. When businesses choose a software framework they begin a long-term relationship for the duration of their application’s lifecycle. Given the strategic consequences of this decision, businesses must carefully consider how frameworks enhance developer productivity, business functionality,application flexibility, product performance, the long-term viability of that framework, and the inherent security in each framework’s design and technology. The ideal framework demonstrates strength in each category by minimizing product time-to-market, reducing maintenance costs, supporting product variety, and facilitating a superior customer experience. The “Discovering The Best Cross-Platform Framework Through Benchmarking” whitepaper evaluates two frameworks supporting multi-platform desktop application development: Delphi and Electron. This is the first in a series of blog posts looking more closely at each of the 26 individual metrics used in the study, and how Delphi and Electron each fared on these metrics. Download the complete whitepaper here Benchmark Category: Developer Productivity Developer productivity is the measure of effort and code required for developers to complete typical development tasks. Productivity directly impacts product time-to-market and long-term labor costs so tools that increase developer productivity have substantial impacts on business timelines and bottom lines. Productivity can be realized in two distinct ways – reduced coding requirements due to native libraries, and IDE tools like code-completion and visual design.IDEs with greater library breadth generally result in fewer lines of code per application and produce a clean, lean codebase that minimizes opportunities for bugs or maintenance problems later in the product life cycle. Benchmark Metric 1/26: Development Time Development Time Metric: Total hours spent writing the fully functional application from scratch. This measurement assesses the value a framework’s productivity tools add to an average developer with no prior task knowledge. Comprehensive documentation, plentiful native libraries, code completion, and other IDE tools will allow the developer to design and build the benchmark application more efficiently than would be the case in a “standard” text editor. Benchmarking Results Delphi Score: 3 (out of 5) One expert Delphi developer completed the Unicode Reader in 23.3 hours using the RAD Studio IDE. Application modification with internal tests took 8.33 hours for a total development time of 31.63 hours. Five other Delphi developers gave estimates for the original application ranging from 24 to 50 hours, averaging 38.8 hours. Electron Score: 5 (out of 5) One expert Electron developer completed the Unicode Reader in 20 hours using Angular for the RSS reader GUI and node-postgres, a collection of node.js modules, for the database interactions. However, application modification with internal tests took an additional 47.8 hours – 28.6 hours to code the tests and 19.2 hours to troubleshoot issues on three platforms until acceptance criteria were met – for a total of 67.8 hours. Three other Electron estimates for the Unicode Reader ranged from 80 to 120 hours with a mean of 100 hours. Download the complete whitepaper here

Read More

How Does UI Design Approach Differ Between Delphi And Electron? Benchmarking Study

How much effort does a developer have to put in to build a great-looking, intuitive and functional user interface? Much depends on how much the IDE or framework the developer is using facilitates the process through a WYSIWYG (What You See is What You Get) approach, ready-made visual design components, libraries and tools, and a low-code approach that automates as much of the repetitive parts of the process as possible. When businesses choose a software framework they begin a long-term relationship for the duration of their application’s lifecycle. Given the strategic consequences of this decision, businesses must carefully consider how frameworks enhance developer productivity, business functionality,application flexibility, product performance, the long-term viability of that framework, and the inherent security in each framework’s design and technology. The ideal framework demonstrates strength in each category by minimizing product time-to-market, reducing maintenance costs, supporting product variety, and facilitating a superior customer experience. The “Discovering The Best Cross-Platform Framework Through Benchmarking” whitepaper evaluates two frameworks supporting multi-platform desktop application development: Delphi and Electron. This is the second in a series of blog posts looking more closely at each of the 26 individual metrics used in the study, and how Delphi and Electron each fared on these metrics. The first can be found here. Download the complete whitepaper here Benchmark Category: Developer Productivity Developer productivity is the measure of effort and code required for developers to complete typical development tasks. Productivity directly impacts product time-to-market and long-term labor costs so tools that increase developer productivity have substantial impacts on business timelines and bottom lines. Productivity can be realized in two distinct ways – reduced coding requirements due to native libraries, and IDE tools like code-completion and visual design.IDEs with greater library breadth generally result in fewer lines of code per application and produce a clean, lean codebase that minimizes opportunities for bugs or maintenance problems later in the product life cycle. Benchmark Metric 2/26: UI Design Approach UI Design Approach Metric: Does the framework’s IDE allow for graphical/visual application creation and provide a “What You See Is What You Get” (WYSIWYG) view model? IDEs that support development through “drag and drop” components or other visual methods allow users to engage different methods of thought and creativity as they work. Visual creation through WYSIWYG editors preclude businesses from needing every version of physical hardware to view platform-native styling. Benchmarking Results Delphi Score: 5 (out of 5) Delphi’s RAD Studio IDE offers a What-You-See-Is-What-You-Get (WYSIWYG) design experience with drag-and-drop components for visual GUI design. The designed GUI can be viewed using native Android/iOS/Windows/macOS styling or custom styles and can simulate application appearances within mobile devices of varying screen sizes. Components can also be resized and have their properties adjusted in the Object Inspector without touching code, allowing rapid prototyping through visual development. Delphi also offers the ability for a developer to edit the UI using a simple YAML style language definition. Electron Score: 3 (out of 5) Electron lacks a native IDE but can be developed using text editors and command line tools, Electron doesn’t include a WYSIWYG design experience or drag-and-drop components by default. The UI can be created using HTML5 and CSS styling. Unless the developer chooses an IDE like Visual Studio, Electron applications must be compiled and run to view the project’s GUI. Download […]

Read More

13 Things About Native Windows Development You May Not Know

Software development is an exciting journey. Choosing the best development tools can considerably save us from many troubles down the road. Although every developer has some considerations regarding native windows development, there might be some exciting points you may not have known. So let us explore them together. 1. Are all native development tools equal? Not all native development tools are equal. On one end of the spectrum, there are time-tested native windows development solutions. On the other end, there are recently born scripted tools without any proven success history. Designing the right development tool can take decades of hard work and passion. Longevity – the ability for a product to last over an extended period of time – is often a true indicator of the quality and fitness of the development solution. People ‘vote with their feet’ . A poor but well-marketed product can often make a noisy and exciting splash when it hits the headlines but over time you find that the new Best Thing Ever, when the initial honeymoon period is over, quickly submerges under the seas of reality versus sales hype until it suffocates and eventually dies. Picking the quieter, long-lived solutions turns out to be the smart choice. The stability of the solution comes from a development tool having gone through the battle-hardening of many coders hammering it late into the night, fighting the demons of software development for real. 2. What is the “Hello World” program size? Comprehensively comparing native windows development tools can be difficult, but we can do a simple litmus test. Just find out the minimum size of the “Hello World” program that you can ship to your client. If its exe size is enormous and needs many accompanying files to run, it is a warning sign of possible problems. Every byte counts and every additional file we have to distribute with our software will require support, maintenance, and updates. Make sure to take into account the size of any supporting downloads required to make an app work on the target machine. A tiny executable package which required nearly a gigabyte of additional runtimes is a beast in disguise. 3. Does Productivity Matter? In any software project, Developers’ productivity matters. RAD studio is an acronym for Rapid Application Development. It has proved its ease of use and the productivity increase it imbues in developers who use it since Windows 3.1 – that’s 25+ years of service! No native Windows development tool can come close to Delphi RAD studio productivity. In addition, it has excellent time-saving features like an elegant IDE, Refactoring, Code Insight, VCL, Rest Debugger, LiveBindings Designer, compilation speed, backward compatibility, DB Connectivity, to name a few. 4. Is it essential to protect the source code? Source code might contain business secrets, so we should protect it. There are tools available to decompile JavaScript-based and .Net software easily and quickly. The developer can obfuscate it, but it is not foolproof and, it might also slow down execution. This leakage is a problem even if we do not care about our intellectual rights. Our client’s data and business secrets are at risk, which might lead to dire consequences. Compare this to Delphi and C++ Builder which both generate processor-native machine code, striping metadata, making decompiling almost useless and extremely difficult to […]

Read More

Directions & Geocoding with GeoApify in TMS FNC Maps

TMS FNC Maps v2.4 adds support for a new geocoding and directions service in addition to the existing supported directions services from Azure, Bing, Google, Here, MapBox and OpenRouteService. GeoApify The GeoApify API service provides geocoding, reverse geocoding and directions. This service can be used in combination with all supported mapping services in TMS FNC Maps. Specifically in combination with the OpenLayers mapping service this is a worthwhile free alternative to comparable services. Geocoding A geocoding request converts a text address to a geographic latitude & longitude coordinate. The coordinate can then be used to display a location on the map. With the following code we are going to look up the location of “Baker Street, London” and display it on the center of the map with a marker and a title that contains the address.Note that this example uses the asynchronous method with a callback. procedure TForm1.Button1Click(Sender: TObject); var Item: TTMSFNCGeocodingItem; begin TMSFNCGeocoding1.APIKey := ‘abc123’; TMSFNCGeocoding1.Service := gsGeoApify; TMSFNCGeocoding1.GetGeocoding(‘Baker Street, London’, procedure(const ARequest: TTMSFNCGeocodingRequest; const ARequestResult: TTMSFNCCloudBaseRequestResult) begin if (ARequestResult.Success) and (ARequest.Items.Count > 0) then begin Item := ARequest.Items[0]; TMSFNCMaps1.BeginUpdate; TMSFNCMaps1.SetCenterCoordinate(Item.Coordinate.ToRec); TMSFNCMaps1.AddMarker(Item.Coordinate.ToRec, Item.Address); TMSFNCMaps1.EndUpdate; end; end ); end; Reverse Geocoding A reverse geocoding request converts a latitude & longitude coordinate to a text address. The text address can then be used to display an address associated with a location on the map. With the following code we are going to track a click on the map, retrieve the address for that location and display it on the map with a marker and a title that contains the address Note that this example uses the synchronous method that provides an immediate result without a callback. procedure TForm1.TMSFNCMaps1MapClick(Sender: TObject; AEventData: TTMSFNCMapsEventData); var Address: string; begin TMSFNCGeocoding1.APIKey := ‘abc123’; TMSFNCGeocoding1.Service := gsOpenRouteService; Address := TMSFNCGeocoding1.GetReverseGeocodingSync(AEventData.Coordinate.ToRec); TMSFNCMaps1.BeginUpdate; TMSFNCMaps1.SetCenterCoordinate(AEventData.Coordinate.ToRec); TMSFNCMaps1.AddMarker(AEventData.Coordinate.ToRec, Address); TMSFNCMaps1.EndUpdate; end; Directions A directions request provides step by step directions between a start and end location. The directions data can then be used to display a route on the map. Additional options can be configured for the directions request, including: waypoints, alternative routes and language. With the following code we are going to retrieve driving directions between New York and Philadelphia. On the map, a marker is displayed at both the start and end location, a polyline displays the route and a label displays the distance and duration of the route.In the TListBox on the step by step directions are displayed for each step in the route directions.Note that this example uses the asynchronous method with a callback. procedure TForm1.Button1Click(Sender: TObject); var cStart, cEnd: TTMSFNCMapsCoordinateRec; begin cStart.Latitude := 40.68295; cStart.Longitude := -73.9708; cEnd.Latitude := 39.990821; cEnd.Longitude := -75.168428; TMSFNCDirections1.APIKey := ‘abc123’; TMSFNCDirections1.Service := dsGeoApify; TMSFNCDirections1.GetDirections(cStart, cEnd, procedure(const ARequest: TTMSFNCDirectionsRequest; const ARequestResult: TTMSFNCCloudBaseRequestResult) var it: TTMSFNCDirectionsItem; I: Integer; p: TTMSFNCOpenLayersPolyline; Hours, Minutes: string; begin TMSFNCOpenLayers1.ClearPolylines; ListBox1.Clear; if ARequestResult.Success then begin if ARequest.Items.Count > 0 then begin TMSFNCOpenLayers1.BeginUpdate; it := ARequest.Items[0]; TMSFNCOpenLayers1.AddMarker(it.Legs[0].StartLocation.ToRec, ‘New York’, DEFAULTWAYPOINTMARKER); TMSFNCOpenLayers1.AddMarker(it.Legs[0].EndLocation.ToRec, ‘Philadelphia’, DEFAULTENDMARKER); Hours := IntToStr(Round(it.Duration / 60) div 60); Minutes := IntToStr(Round(it.Duration / 60) mod 60); p := TTMSFNCOpenLayersPolyline(TMSFNCOpenLayers1.AddPolyline(it.Coordinates.ToArray)); p.StrokeColor := gcBlue; p.StrokeOpacity := 0.5; p.StrokeWidth := 5; p.&Label.Text := FloatToStr(Round(it.Distance / 1000)) + ‘ km, ‘ + Hours + ‘ h ‘ + Minutes + ‘ min’; TMSFNCOpenLayers1.ZoomToBounds(it.Coordinates.Bounds.ToRec); TMSFNCOpenLayers1.EndUpdate; ListBox1.Clear; for I := 0 to it.Steps.Count – 1 do begin ListBox1.Items.Add(it.Steps[I].Instructions) end; end; end; end ); end; Available Now The TMS FNC Maps v2.4 update is available now for Delphi & Visual Studio Code (with TMS WEB Core). You can download the latest version and start using the new features right […]

Read More

Everything You’ve Ever Wanted to Know About UI Components

Building an attractive user face is an important requirement for any application for promoting positive user engagement. In modern application designing, components play a key role in achieving reusability and compatibility across multiple platforms. In simple terms, a component is a logical grouping that represents a particular web element that does a specific task that you can re-use across your application. UI components are the major building blocks of any application. Today, many component libraries provide a wide range of UI components for anything you need to visualize in your UI.  For example, Ext Js Kitchen Sink consists of simple components such as Buttons, DataView, Login Forms to more sophisticated components like Grid, Trees, Charts, and Calendar. Let’s explore in this article everything you have ever wanted to know about UI components. Usually, a UI component is a child component of a parent UI component. Users’ basic UI components include rendering a template, showing and hiding, enabling and disabling, and centering in the main container. Users can also do advanced functions based on the component, such as changing the size and position, drag and drop, floating, docking other components, etc. For example, all Sencha UI components are children of the parent class Ext. Component. Therefore, all the components inherit every function of a parent component.  UI components make UI building an easy task for web developers. UI components libraries allow developers to drag and drop the component they want without writing any code to help accelerate the development. However, developers also get the flexibility to customize the components according to the way they want. Such reusable components help organize a UI and maintain consistency across the entire application. It also means components help standardize a UI.  Buttons components are basic UI components frequently used in the application among all the UI components. They help you take any action, such as directing the page to another page and making a choice. Developers not only can include basic button functionality but also, there are offers a wide range of button components, from basic to advanced. For example, Ext Js Button components include Menu buttons that can drop a menu upon clicking the button, Split buttons with icons and texts, buttons containing a link, and segmented buttons. Developers can make use of such advanced button components to provide more capabilities for the UI. To make a component functional, data binding is an essential requirement. You can use component configs to bind data. When you connect the data with the component config, it automatically reflects any update to data. Components can do different types of data binding.  For example, Ext Js Dynamic data binding enables dynamically generating data in components. Two-way data binding is another capability Ext Js provides. In two-way data binding, when one component changes, another component will automatically change accordingly. Other data binding components can include connecting formulas, binding associations, changing the components state, chaining combo boxes based on the data, and chaining selections. In addition, you can do remote data binding to render data from external data sources. All these data binding helps realize data utilization the way developers want.  A grid is an important UI component that helps render millions of data efficiently on a web page without affecting the application performance. You can build tables with advanced functionalities […]

Read More

5 Tell-Tale Signs You Need to Get a New JavaScript Grid

A Data Grid is a user interface element that you’ve most likely seen before. It’s a table-based component that shows data in a table format. Each data item is represented as a row with columns indicating the field of items.  Grids have been in functionality for a very extended period of time, especially on desktops, but they’re becoming increasingly ubiquitous in the UI of web apps. Every computer that takes part in a data grid must execute a certain software.  The program serves as the system’s administrator and handles numerous grid-based activities.  To be more specific, the software divides up the work into smaller chunks and distributes it across the computers, allowing everyone to work on their projects simultaneously.  The results of sub-projects are collected and combined to fulfill a larger-scale project after their completion.  It is possible to exchange information about which subtasks each computer is currently working on and how to consolidate and deliver results thanks to the software. In this article, we will go through the various benefits and features Ext JS offers as a JavaScript grid, and the drawbacks it can cause in your projects.  We will also highlight the ways to optimize Ext JS  to improve performance. Why Should You Use Sencha Ext JS? Extended JavaScript is abbreviated as ExtJS. It is a Sencha JavaScript framework based on Yahoo User Interface (YUI). It’s essentially a modern-looking desktop application development platform.  This tutorial will deal with problems with Ext JS grid performance, its benefits, limitations, and methods for improving your website performance through the Ext JS grid we are using. Because of the computational complexities, very high costs are associated with new implementations of grids that most firms and software engineers today choose for existing system solution approaches.  So It’s no surprise that many third-party JS data grids are available in both free and premium editions.  However, choosing which one to utilize can be difficult in and of itself. So how do you go about doing that? After ensuring that a grid fits the features and performance criteria, which can be easily analyzed by Sencha’s own JS Grid Performance Analyzer, developers are more likely to use the widget in their applications if it comes with detailed documentation that lays down all functionalities and provides examples. What Are the Useful Features of Ext JS? The latest version of Ext JS provides the following features: Grids, pivot grids, forms, charts, and trees are among the rich UI widgets available that can also be customized. There exists compatibility of code between new and previous versions of Ext JS. A versatile tool for layout management aids in the organization of data and a display of that content and data across a variety of browsers on various devices having different sized screens. The advanced data package separates the data layer from that of the widgets of UI.  The data package enables data gathering on the client-side using models presenting high functionality with capabilities like being able to sort and filter through data. Protocol agnostic can obtain information from any source at the back end regardless of the protocol. Themes that can be altered.  Multiple theme options are provided that are out of the box for widgets belonging to Ext JS, consistent throughout platforms. What Interesting Benefits Can You Acquire from Ext […]

Read More

This Is How Technology Is Changing Windows IDE’s Treatment

While the idea of integrated development environments (IDE software) dates back to 1983 when Borland launched TurboPascal, the first-ever editor-compiler integration, many believe the IDE wave really started with Microsoft’s Visual Basic and Delphi in the 1990s. Long vbefore even those early days, early developers would save their code on a variety of hard-copy mediums such as the IBM punch card machine o,r punched paper tape, turn it in over to a machine/computer operator, and wait, sometimes for hours, for the printout to return before the developer would know whether or not their program was successful and if, it was, what the output generated looked like. The next generation was an improvement, with such advances as time-sharing terminals, where the software developer could save their code on a remote computer The programmer still often had to wait several hours before their code could be compiled, executed and the results arrive back. Luckily things progressed rapidly until the advent of the personal computer era meant we developers could write, compile and execute our code all on one machine with the immediate gratification if it worked – or woe and angst when it didn’t. Did the rise of the Internet make IDEs essential? However, the explosive growth of the internet accelerated the need for rapid application development (RAD); developers and businesses sought ways to abstract their ideas to higher languages, develop and deploy software faster, and ultimately become more productive. The success of Microsoft Windows highly graphical user interface offered – and demanded – solutions which were more instant and where the visual elements of the program’s user interface could be seen while designing, prior to deployment Hence the advent of Visual Basic and Delphi IDEs where screen design was WYSIWYG and a more tactile, responsive, intuitive experience. Developers could now think of code in graphical terms and visually design applications by leveraging the drag and drop feature in these IDEs. While the development of the first Windows IDEs was met with great enthusiasm from developers, how they were treated will quickly pale in comparison to how we treat a Windows IDE today.  What are the key elements of an IDE? Continuous advancement in technology has brought about massive improvements to the Windows IDEs. Over the years, we have seen integrated environments with features such as; Programmable editors Code refactoring engines Team collaboration systems Object and data modeling Build environments Debuggers Unit testing  Static and dynamic program analysis. Do Windows IDEs target Android/IOS/macOS/Linux and Windows? With advances in technology, the Windows IDE now targets not just apps for Windows but also those of Android, iOS, macOS and Linux. For example, Delphi can compile to native 32-bit or 64-bit code for Windows using the VCL framework and compile to 32-bit or 64-bit code for Windows, macOS, Android, iOS, and Linux using the FMX framework. The key takeaway here is that all the apps are native apps not some kind of bloated interpretive virtual app environment framework. The native close to the metal nature of Delphi and C++ Builder apps means they run at the full speed of the underlying hardware with almost nothing between the device’s internals other than the operating system. This means they are scary fast and ridiculously reliable with great resistance to operating system changes in shared components that brings about […]

Read More

FNC WX Docx: Generating Word documents made easy!

In need of an intuitive way to generate Docx files with Delphi without having to install Microsoft® Word? TMS has you covered! With the latest release of TMS FNC WX Pack, we’ve added the new TTMSFNCWXDocx component which lets you generate Docx files on all platforms.  We’ve added a lot of functionality to offer maximum flexibility and allow you to customize the document requirements.  You can add:  formatted text tables images table of contents headers footers bookmarks links page numbering Everything you’ll need to build your documents. It’s even possible to export the document structure to a JSON template. A template that can easily be modified and used to perform actions like mail merging. Creating a document The creation of the document is intuitive. you can work with predefined methods and properties to customize your document. You can see how to create a document in this video: Building a template Building a template is as simple as adding the fields you want to edit later and just set the ID of that field. You can later use this ID to search the document for the desired field. Using a template After creating a template you can use following code to generate an invoice. This is a code snippet from the advanced demo. This code loops over a dataset and creates for every customer their invoices.  Customers.First; while not Customers.Eof do begin id := Customers.FieldByName(‘CustNo’).AsInteger; AsText(TMSFNCWXDocx1.FindByID(‘CustNo’) as TTMSFNCWXDocxChild).Text := IntToStr(id); AsText(TMSFNCWXDocx1.FindByID(‘Contact’) as TTMSFNCWXDocxChild).Text := Customers.FieldByName(‘Contact’).AsString; AsText(TMSFNCWXDocx1.FindByID(‘Company’) as TTMSFNCWXDocxChild).Text := Customers.FieldByName(‘Company’).AsString; AsText(TMSFNCWXDocx1.FindByID(‘Phone’) as TTMSFNCWXDocxChild).Text :=Customers.FieldByName(‘Phone’).AsString; AsText(TMSFNCWXDocx1.FindByID(‘FAX’) as TTMSFNCWXDocxChild).Text := Customers.FieldByName(‘FAX’).AsString; AsText(TMSFNCWXDocx1.FindByID(‘Addr1’) as TTMSFNCWXDocxChild).Text := Customers.FieldByName(‘Addr1’).AsString; AsText(TMSFNCWXDocx1.FindByID(‘Addr2’) as TTMSFNCWXDocxChild).Text := Customers.FieldByName(‘Addr2’).AsString; AsText(TMSFNCWXDocx1.FindByID(‘Zip’) as TTMSFNCWXDocxChild).Text := Customers.FieldByName(‘Zip’).AsString; AsText(TMSFNCWXDocx1.FindByID(‘City’) as TTMSFNCWXDocxChild).Text := Customers.FieldByName(‘City’).AsString; AsText(TMSFNCWXDocx1.FindByID(‘Country’) as TTMSFNCWXDocxChild).Text := Customers.FieldByName(‘Country’).AsString; t := AsTable(TMSFNCWXDocx1.FindByID(‘Items’) as TTMSFNCWXDocxChild); toPay := 0; orders.Filtered := False; Orders.Filter := ‘CustNo = ‘ + IntToStr(id); Orders.Filtered := true; Orders.First; t.Rows.Clear; while not Orders.Eof do begin tr := t.AddRow; tc := tr.AddCell; p := tc.AddParagraph; p.AddText(Orders.FieldByName(‘ItemNo’).AsString); tc := tr.AddCell; p := tc.AddParagraph; p.AddText(Orders.FieldByName(‘Description’).AsString); tc := tr.AddCell; p := tc.AddParagraph; p.AddText(Orders.FieldByName(‘ItemsTotal’).AsString); tc := tr.AddCell; p := tc.AddParagraph; p.AddText(Orders.FieldByName(‘ItemPrice’).AsString); tc := tr.AddCell; p := tc.AddParagraph; p.AddText(Orders.FieldByName(‘ItemTotalPrice’).AsString); toPay := toPay + Orders.FieldByName(‘ItemTotalPrice’).AsFloat; Orders.Next; end; AsText(TMSFNCWXDocx1.FindByID(‘TotalToPay’) as TTMSFNCWXDocxChild).Text := FloatToStr(toPay); TMSFNCWXDocx1.GetDocxAsFile(TPath.Combine(pth,’Invoice’ + IntToStr(id) + ‘.docx’)); Customers.Next; end; This will generate the following document on the right from the template on the left. Available Today! The TTMSFNCWXDocx component is available in the latest update, available today. So go ahead and download the latest version of the TMS FNC WX Pack. The TMS FNC WX Pack is part of the FNC family, so as a reminder, below is an overview of what FNC has to offer. TMS FNC Components can be used simultaneously on these frameworks TMS FNC Components can be used simultaneously on these operating systems/browsers TMS FNC Controls can be used simultaneously on these IDEs

Read More