Noutați

TFDBatchMove Is A Powerful Way To Move Data Between Text Files And Tables Using Datasets In Delphi

Location You can find the TFDBatchMove sample project at: Start | Programs | Embarcadero RAD Studio Sydney | Samples and then navigate to: Object PascalDataBaseFireDACSamplesComp LayerTFDBatchMoveMain. How to Use the Sample Navigate to the location given above and open: Press F9 or choose Run > Run. Select one of the following connections from the Use Connection Definition drop-down menu: Access_Demo, Access_Demo_Pooled, SQLite_Demo or SQLite_Demo_Pooled. Click the three buttons to fully test the component behaviour: Click 1. Move text to table to load the data from the Data.txt file into a table. Click 2. Move table to table to move the dataset from one table to a different one. Click 3. Move table to text to move the table content to an output file DataOut.txt. Implementation 1. Move text to table button: This button loads the content from a txt file located at Start | Programs | Embarcadero RAD Studio Sydney | SamplesObject PascalDataBaseFireDACSamplesComp LayerTFDBatchMoveMaindata.txt into a table from the selected DBMS. The sample adds the FireDAC.Comp.BatchMove.Text unit to the interface uses section to allow the creation of a text reader TFDBatchMoveTextReader and a dataset writer TFDBatchMoveDataSetWriter. Sets the FileName property of TFDBatchMoveTextReader with the location of data.txt. This is the file used to load the data to the table. Also several DataDef properties are adjusted according to the text file format. DataDef.Separator := ‘,’; It defines the separator used to separate the fields in the text file. DataDef.WithFieldNames := True; It specifies that the field name is included in the first row of the text file. Uses the Dataset property of TFDBatchMoveDataSetWriter to set the destination dataset. Also Optimise property is set to False to allow the dataset content to be visualized using TDBGrid. The GuessFormat method is called before loading the data to automatically recognize the text file structure. Then the demo executes the TFDBatchMove component and shows the loaded data using a query in the TDBGrid. 2. Move table to table button: This button moves the data between two different tables on the same DBMS. The sample creates a TFDBatchMoveDataSetReader dataset reader and a TFDBatchMoveDataSetWriter dataset writer. Uses the Dataset property of TFDBatchMoveDataSetReader to set the source dataset, qryLoaded. Uses the Dataset property of TFDBatchMoveDataSetWriter to set the destination dataset, qryMoved. It executes the TFDBatchMove component and shows the query of both datasets on the TDBGrid. 3. Move table to text button: This button copies the data from the table source to an output file located at the application’s path. It creates the destination file: DataOut.txt. The sample creates a TFDBatchMoveDataSetReader dataset reader and a TFDBatchMoveTextWriter text writer. Uses the Dataset property of TFDBatchMoveDataSetReader to set the source dataset, qryLoaded. Sets the FileName property of TFDBatchMoveTextWriter to set the output file name and path: Start | Programs | Embarcadero RAD Studio Sydney | SamplesObject PascalDataBaseFireDACSamplesComp LayerTFDBatchMoveMainDataOut.txt. It executes the TFDBatchMove component to create the file and save the data to the output file. You can refer to the link below for more details about this sample: http://docwiki.embarcadero.com/CodeExamples/Sydney/en/FireDAC.TFDBatchMove_Sample Check out the full source code for the TFDBatchMove demo over on GitHub!

Read More

Boost Productivity With Useful Bookmarks IDE Plugin To Bookmark And Navigate Code In Delphi And C++Builder

Many know how to use BookMark in your code editor using the RAD Studio IDE. You can mark a location in your code with a bookmark and jump directly to it from anywhere in the file. Bookmarks are preserved when you save the file and available when you reopen the file in the Code Editor. These existing IDE Bookmark features can be replaced with a flexible IDE Plugin Bookmarks 1.6.2. This post will help to understand more about this plugin. This is applicable for Delphi/C++ Builder. Overview of the BookMark1.6.2 As we know existing IDE Code editor has a bookmark feature, where a user can book mark up to 10 bookmarks and easily navigate to the code. This same feature is Replaced with an elegant Bookmark Icon and with some more shortcuts like auto numbering the Bookmark by short cut key (ctrl+B). Jump between the markers quickly by pressing (ctrl+ Alt+ Left or Right Arrow) keys. Never overwrite an existing bookmark accidentally. How to install: You can easily install this IDE Plugin from GetIt Package Manager. The steps are as follows. Navigate In RAD Studio IDE->Tools->GetIt Package Manager->select IDE Plugins in Categories-> BookMarks 1.6.2 by Embercadero Technologies and click Install Button. Read the license and Click Agree All. An Information dialog saying ‘Requires a restart of RAD studio at the end of the process. Do you want to proceed? click yes and continue. It will download the plugin and installs it. Once installed Click Restart now. BookMarks1.6.2 How to use: Open some projects in the IDE, place the cursor in some lines, and press Ctrl+B. A Bookmark Icon Popped with a Number and placed a marker. Like this, you can create 10 bookmarks. Beyond 10 Bookmarks it is marked as # instead of a number. You can press Ctrl + 1, Navigate to the first bookmark, press Ctrl + 2, and so on. For the 10th Bookmark, it is represented as 0 and the shortcut key is Ctrl+0. Beyond 10 Bookmarks, it can be marked as #. Jump between the BookMarks quickly with Ctrl+Alt+Left or Right Arrow. You can view/add/clear the bookmarks by clicking Menu View->Editor->BookMarks. View Bookmarks Be sure to check out all the available sample applications here! Find out more information about the Bookmarks plugin in Embarcadero GetIt.

Read More

FlexCel .NET, .NET5, Blazor and WebAssembly – Part 1

Introduction: Supporting .NET 5 We’ve just released FlexCel .NET 7.8, which adds support for .NET 5. Usually, “adding support” for a new version of a .NET framework is just recompiling the code, but in this case, as .NET 5 is the successor of .NET Core 3, not of .NET framework 4.8, things got a little more complicated. There were subtle errors generated from the switch from NLS in Windows to ICU (see https://docs.microsoft.com/en-us/dotnet/standard/globalization-localization/globalization-icu ), and there were issues with the switching of the graphics engine from GDI+ to SKIA. For this release we spent a lot of time optimizing the SKIA rendering, so it is now a little faster than GDI+. We added a way to switch back to GDI+ in Windows if you need to deal with WMF/EMF files or right-to-left languages (see https://doc.tmssoftware.com/flexcel/net/guides/net-core-guide.html ). We made a full review of all string comparisons in the code to ensure they work with ICU. But this is all just business as usual. For this post, we wanted to have a little fun. And so we decided to investigate what cool stuff we can do with .NET 5 and FlexCel. Generating a client-side app using Blazor and WebAssembly Even if still a work in progress, one of the hot new things in .NET 5 is the improvements in Blazor, and more specifically, Blazor WebAssembly. Blazor WebAssembly allows you to run a web app enterely on the browser, offline, in electron, and it even supports Progressive Web Applications It made sense then to start with a small WebAssembly app using FlexCel .NET. But before getting into that and getting the hopes too high, I’d like to mention two limitations currently in Blazor WebAssembly: Blazor doesn’t yet support AOT. This means that in order to compile to WebAssembly, Blazor currently has a .NET interpreter running in WebAssembly, and the interpreter runs .NET IL, not WebAssembly IL. FlexCel isn’t directly converted to WebAssembly, but it rather runs in the browser as .NET IL. And because of there is no “real” FlexCel WebAssembly yet, it is not currently feasible to call FlexCel WebAssembly from TMS WEB Core The graphics engine we use for cross-platform rendering,(SkiaSharp), doesn’t currently support Blazor WebAssembly, even if they are working on it. Not having SKIA means that you can’t use the FlexCel rendering engine in WebAssembly, so you currently can’t export an Excel file to PDF, SVG, or HTML in Blazor WebAssembly.Note that “Server Blazor”, which runs native .NET 5 code in the server, doesn’t have this limitation. Both limitations should go away relatively soon, but we wanted to be completely honest about the current state. So now, with that out of the way, let’s start. For this first example, we will create a Blazor WebAssembly “calculator” app that runs in the client and uses the FlexCel engine to calculate expressions This was the first part of a 2-part series. In this one, we investigated client-side Blazor. In the next part, we will play a little with server-side Blazor.

Read More

Manage Your Collection Of Pages Easily With TCardPanel Component For Your Delphi VCL Application

We know TPanel  Control has methods to help manage the placement of child controls embedded in the panel. You can also use panels to group controls together, similar to the way you can use a group box. How about having a collection of cards or pages which help to manage the child controls and display only one of them at a time similar to a TabControl? Yes, Delphi provides an excellent VCL component TCardPanel. This post guide you to get TCardPanel sample Project from the GetIt Package manager. Overview of TCardPanel: TCardPanel allows you to display a collection of cards or pages (TPanel controls) that can be displayed one at a time. The control displays the active card and its content and you can write code to switch to any other card or use the integrated mechanism to let a user move among cards sequentially with a swipe gesture. A Card Panel hosts multiple subpanels displaying only one of them, similar to a TabControl, but it has no specific UI indicating the various panels. How to install TCardPanel Demo: You can easily install this Sample Project from GetIt Package Manager. The steps are as follows. Navigate In RAD Studio IDE->Tools->GetIt Package Manager->select Sample Projects in Categories-> Card Panel Demo(Delphi) 1.0 by Embercadero Technologies and click Install Button. Read the license and Click Agree All. An Information dialog saying ‘Requires a restart of RAD studio at the end of the process. Do you want to proceed? Click yes and continue. It will download the plugin and installs it. Once installed Click Restart now. GetIt Card Panel Demo Upon installation completion, it opens the sample project CardPanel. You can compile, and run the application. The source code is located in the location C:UsersPublicDocumentsEmbarcaderoStudio21.0SamplesObject PascalVCLCardPanel This Sample app contains a TCardPanel on the form with 5 cards placed with each contains an image component. On clicking the button Previous and Next the respective cards were navigated. for more details check this Docwiki. Check the TCardPanel Demo output here, TCardPanel Demo Be sure to check out all the available sample applications here! Find out more about the TCardPanel demo available via Embarcadero GetIt! Also available for C++Builder Windows apps in GetIt!

Read More

Learn To Use Python Objects Inside Your Delphi Source Code With This Windows Sample App

Sometimes we may need to use Python objects like COM automation objects, inside your Delphi source code. Thinking about how to do it? Don’t worry. Python4Delphi has an excellent library unit that does for us. Using this we just create python objects by passing values as a variant that will return the python type as Delphi variant type. Also, the library has extensive helper routines to validate the type as well. This post guide you to understand better using the Python4Delphi sample app. You can also use Python4Delphi with C++Builder. Python4Delphi Demo25 Sample App shows how to create a python variable type (i.e. Integer, Float, String, Dates, Mappings, Object types) in Delphi by just passing values as variant type parameters. You can find the Demo25 source on GitHub. Prerequisites: Download and install the latest Python for your platform. Follow the Python4Delphi installation instructions mentioned here. Alternatively, you can check out this video Getting started with Python4Delphi. Components used in Python4Delphi Demo25 App: TPythonEngine: A collection of relatively low-level routines for communicating with Python, creating Python types in Delphi, etc. It’s a singleton class. TPythonGUIInputOutput: Inherited from TPythonInputOutput (which works as a console for python outputs) Using this component Output property you can associate the Memo component to show the Output. TMemo: A multiline text editing control, providing text scrolling. The text in the memo control can be edited as a whole or line by line. VarPyth.pas – set of classes and helper routines to create python types and return variant types in Delphi. You can assert whether the type is Python type, Kind of python types(e.g. IsInteger, IsBool, IsFloat), etc. Also, you can use BuiltinModule routines to manipulate variant values. You can find the Python4Delphi Demo25 sample project from the extracted GitHub repository ..Python4DelphiDemosDemo25.dproj. Open this project in RAD Studio 10.4.1 and run the application. Implementation Details: PythonEngine1 provides the connection to Python or rather the Python API. This project uses Python3.9 which can be seen in TPythonEngine DllName property. PythonGUIInputOutput1 provides a conduit for routing input and output between the Graphical User Interface (GUI) and the currentlyexecuting Python script. In this sample app, We have Buttons which unit tests different python types in Delphi. This is achieved by routines in VarPyth.pas. some e.g mentioned below. VarPythonCreate – Create a python type in Delphi bypassing variant values as a parameter. Internally the python object type is created based on the value in the parameter and returns the variant. Using this in Delphi we can perform python arithmetic operations, string manipulations, sequence operations, etc with the help of VarPyth helper routines. Memo2, used for providing the Python Script to execute, and Memo1 for showing the output.  On Clicking Execute Button the python script is executed. On Clicking Run Selected tests once it will validate each type created and manipulates some arithmetic, string manipulations, etc. procedure TMain.btnTestIntegersClick(Sender: TObject); var a, b, c : Variant; big : Int64; begin // initialize the operands a := VarPythonCreate(2); Assert(VarIsPython(a)); Assert(VarIsPythonNumber(a)); Assert(VarIsPythonInteger(a)); Assert(Integer(a) = 2); b := VarPythonCreate(3); Assert(VarIsPython(b)); Assert(VarIsPythonNumber(b)); Assert(VarIsPythonInteger(b)); Assert(Integer(b) = 3); end; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 procedure TMain.btnTestIntegersClick(Sender: TObject); var   a, b, c : Variant;   big : Int64; begin   // initialize the operands   a := VarPythonCreate(2);   Assert(VarIsPython(a));   Assert(VarIsPythonNumber(a));   Assert(VarIsPythonInteger(a));   Assert(Integer(a) = 2);     b := VarPythonCreate(3);   Assert(VarIsPython(b));   Assert(VarIsPythonNumber(b));   Assert(VarIsPythonInteger(b));   Assert(Integer(b) = 3); end; Note : The […]

Read More

Powerful Cross Platform TeeGrid Is Capable Of Handling A Large Number Of Cells In Delphi FireMonkey

TeeGrid is a full featured third party grid and tabular control for Delphi and C++. Supporting both VCL and FireMonkey it should run on Windows 32 and 64 bit, Mac OSX, Android and iOS. According to the developer it is “Written from scratch (not derived from TCustomGrid or TGrid), aprox 10K lines of code and 100K compiled size. Free for non-commercial use (in binary format).” It claims the only limit is the memory used by your own data, (compile for the 64bit platform for more than 2GB/3GB). Additionally it says that you can use it’s TVirtualModeData class to automatically create columns and provide cell values using OnGet and OnSet events. TeeGrid can be used like a TStringGrid using a TStringsData object: var Data : TStringsData; Data:= TStringsData.Create; // Initialize size Data.Columns:= 2; Data.Rows:= 6; // Set header texts Data.Headers[0]:= ‘A’; Data.Headers[1]:= ‘B’; // Fill rows and cells Data[0,0]:= ‘A0’; Data[1,0]:= ‘B0’; // Set data to grid TeeGrid1.Data:= Data; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 var Data : TStringsData; Data:= TStringsData.Create;   // Initialize size Data.Columns:= 2; Data.Rows:= 6;   // Set header texts Data.Headers[0]:= ‘A’; Data.Headers[1]:= ‘B’;   // Fill rows and cells Data[0,0]:= ‘A0’; Data[1,0]:= ‘B0’;   // Set data to grid TeeGrid1.Data:= Data; Sub-columns (any column can have children columns) TeeGrid1.Columns.AddColumn(‘My Column 1’).Items.AddColumn(‘Sub-Column 1’)… TeeGrid1.Columns.AddColumn(‘My Column 1’).Items.AddColumn(‘Sub-Column 1’)… Per-column formatting (font, back fill, stroke, text alignment, margins) TeeGrid1.Columns[3].ParentFormat:= False; TeeGrid1.Columns[3].Format.Font.Size:= 14; TeeGrid1.Columns[3].TextAlignment:= TColumnTextAlign.Custom; TeeGrid1.Columns[3].TextAlign:= TTextAlign.Center; // or Left or Right TeeGrid1.Columns[3].ParentFormat:= False; TeeGrid1.Columns[3].Format.Font.Size:= 14;   TeeGrid1.Columns[3].TextAlignment:= TColumnTextAlign.Custom; TeeGrid1.Columns[3].TextAlign:= TTextAlign.Center; // or Left or Right Per-cell custom paint using the column OnPaint event Lock columns to left or right grid edges To see the rest of the cells options, go to the next link and download the package: https://github.com/Steema/TeeGrid

Read More

Lovingly Crafted Software To Plan And Simulate Virtual Model Railroads Is Built In Delphi

The 3D Train Studio is an easy-to-use application for planning your perfect model railway and it is built in Delphi. With 3D Train Studio, users can construct their own unique, detailed layouts on their PCs with thousands of tracks to choose from. They can create landscapes consisting of mountains and valleys, place houses and trees along streets and roads and construct their own miniature worlds, with realistic 3D graphics and in real time. Users can also board their virtual model trains and simulate complete rail operations, including animated barriers, signals and road vehicles, automatically or by specially defined events. “We never could have developed 3D Train Studio so efficiently and with such an elegant UI way without Delphi,” said Stefan Werner of 3D Train Studio. On technical side, 3D Train Studio utilizes a lot of different technologies, like a self-written 3D engine capable of rendering thousands of 3D objects in real-time with abstraction of the underlying graphics API (supporting Direct3D 9 and 11), sound processing with the help of the FMOD library, XML-RPC, multi-threading with custom written task manager, custom VCL components for a smooth image viewer, XML processing, multi-language support (currently English and German) and a clean separation of UI, logic and data (MVC). Website https://en.3d-modellbahn.de/ Screenshot Gallery

Read More

Learn How To Use FireDAC In The Dynamic-Link Libraries With DLL Sharing Sample In Delphi

To this end, the sample uses the CliHandle and SharedCliHandle properties of the TFDConnection class. Location You can find the DLLSharing sample project at: Start | Programs | Embarcadero RAD Studio Sydney | Samples and then navigate to: Object PascalDatabaseFireDACSamplesComp LayerTFDConnectionDLL_Sharing Subversion Repository: You can find Delphi code samples in GitHub Repositories. Search by name into the samples repositories according to your RAD Studio version. How to Use the Sample Navigate to the location given above and open Project1.dproj. Press F9 or choose Run > Run. Files File in Delphi Contains Project1.dprojProject1.dpr The project itself. Unit1.pasUnit1.fmx The main form. Project2.dprojProject2.dpr The DLL. Unit2.pasUnit2.fmx The DLL form. Implementation The sample uses FireDAC to implement a connection with a dynamic-link library. To this end, the sample implements three buttons named: Button1, Button2 and Button3. Each button handles a OnClick event to implement the following features: Load a DLL Show data Unload the DLL Load DLL To transfer a connection between an application and a DLL, the sample transfers the TFDCustomConnection.CliHandle property value to the DLL. The handle must be assigned to the TFDCustomConnection.SharedCliHandle property. After the TFDCustomConnection.SharedCliHandle is assigned, the DLL connection can be activated by setting the Connected property to True. Note that there is no need to set up a connection definition, including DriverID. // Application code: FhDll: THandle; // … procedure TForm1.Button1Click(Sender: TObject); begin FhDll := LoadLibrary(PChar(‘Project2.dll’)); @FpShowData := GetProcAddress(FhDll, PChar(‘ShowData’)); end // DLL code: class procedure TForm2.ShowData(ACliHandle: Pointer); var oForm: TForm2; begin oForm := TForm2.Create(Application); oForm.FDConnection1.SharedCliHandle := ACliHandle; oForm.FDConnection1.Connected := True; oForm.FDQuery1.Active := True; oForm.Show; end; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20   // Application code:   FhDll: THandle;   // …   procedure TForm1.Button1Click(Sender: TObject);   begin     FhDll := LoadLibrary(PChar(‘Project2.dll’));     @FpShowData := GetProcAddress(FhDll, PChar(‘ShowData’));   end   // DLL code:   class procedure TForm2.ShowData(ACliHandle: Pointer);   var     oForm: TForm2;   begin     oForm := TForm2.Create(Application);     oForm.FDConnection1.SharedCliHandle := ACliHandle;     oForm.FDConnection1.Connected := True;     oForm.FDQuery1.Active := True;     oForm.Show;   end; Show data Then, the connection can be used as a normal database connection: TShowDataProc = procedure (ACliHandle: Pointer); stdcall; // … FpShowData: TShowDataProc; // … procedure TForm1.Button3Click(Sender: TObject); begin FpShowData(FDConnection1.CliHandle); end   TShowDataProc = procedure (ACliHandle: Pointer); stdcall;   // …   FpShowData: TShowDataProc;   // …   procedure TForm1.Button3Click(Sender: TObject);   begin     FpShowData(FDConnection1.CliHandle);   end Unload DLL To unload the dynimic-link library, the sample implements the following code: TShutdownProc = procedure; stdcall; // … FpShutdown: TShutdownProc; // … procedure TForm1.Button2Click(Sender: TObject); begin FpShutdown(); FreeLibrary(FhDll); end;   TShutdownProc = procedure; stdcall;   // …   FpShutdown: TShutdownProc;   // …   procedure TForm1.Button2Click(Sender: TObject);   begin     FpShutdown();     FreeLibrary(FhDll);   end; Head over and check out the full sample source code for DLL sharing with FireDAC in Delphi.

Read More

Learn To Build A Python GUI For Working with HTTP Requests With Requests Library In A Delphi Windows App

Python for Delphi (Python4Delphi , P4D) with Requests library allow you to execute Http requests in Python GUI for Windows. Python4Delphi is a free tool that can run Python scripts, work with new Python types and modules in Delphi. In this post, we will learn at how to run Requests library in Python for Delphi. Build your own Python GUI apps for Windows with Delphi and C++Builder and Python4Delphi using various Python libraries. Open and run project Demo1, then select Python script that you want execute in Python for Delphi. Use text fields for inserting Python script and for viewing results. Click Execute button for running Python script. Go to GitHub and download Demo1 source. procedure TForm1.Button1Click(Sender: TObject); begin PythonEngine1.ExecStrings( Memo1.Lines ); end; procedure TForm1.Button1Click(Sender: TObject); begin PythonEngine1.ExecStrings( Memo1.Lines ); end; Requests is a simple Python library that allows you to execute standard HTTP requests. Using this library, you can pass parameters to requests, add headers, receive and process responses, execute authenticated requests. Let’s look at some examples. Make GET Request It is very easy to call GET request. Just use method get() and pass URL to this method. From response object you can get a lot of useful information. This example shows how to get content, status and list of response headers. You also can get other properties. import requests r = requests.get(‘https://example.com’) print(r.text) print(r.headers) print(r.status_code) import requests r = requests.get(‘https://example.com’) print(r.text) print(r.headers) print(r.status_code) POST Request with payload and timeout With Requests library, you can perform post requests by calling post() method. It is also possible to pass input data to the parameter payload. Different types of input data are possible. For example, dictionaries, tuples, lists import requests payload1 = {‘key1’: ‘value1’, ‘key2’: ‘value2’} r = requests.post(“https://httpbin.org/post”, data=payload1) print(r.text) payload2 = [(‘key1’, ‘value1’), (‘key1’, ‘value2’)] r1 = requests.post(‘https://httpbin.org/post’, data=payload2) print(r1.text) payload3 = {‘key1’: [‘value1’, ‘value2’]} r2 = requests.post(‘https://httpbin.org/post’, data=payload3) print(r2.text) import requests payload1 = {‘key1’: ‘value1’, ‘key2’: ‘value2’} r = requests.post(“https://httpbin.org/post”, data=payload1) print(r.text)   payload2 = [(‘key1’, ‘value1’), (‘key1’, ‘value2’)] r1 = requests.post(‘https://httpbin.org/post’, data=payload2) print(r1.text)   payload3 = {‘key1’: [‘value1’, ‘value2’]} r2 = requests.post(‘https://httpbin.org/post’, data=payload3) print(r2.text) Authenticated Request In this example we will take a look at how to execute authenticated requests. It is very easy, just pass the username and the password in the auth parameter. If authorization is successful, then we will receive a response status code 200, otherwise there should be non-authorization error 404. import requests from getpass import getpass r=requests.get(‘https://test.org’, auth=(‘username’, getpass())) print(r.status_code) import requests from getpass import getpass r=requests.get(‘https://test.org’, auth=(‘username’, getpass())) print(r.status_code) Check out the Requests library for Python a use it in your own projects. Check out Python4Delphi which can build Python GUIs for Windows using Delphi.

Read More

Sencha News: November Edition

  [Blog] From the General Manager’s Desk 2020 is nearly through, and what a year it’s been! Get a look into the mind of our General Manager, Kegan Blumenthal, with our latest blog as he takes a look back at what’s new and what’s next for Sencha for the remainder of the year. There’s still plenty of surprises in store that we wouldn’t want you to miss—so be sure to give this GM update a read! [Read the Blog]   [Webinar On-Demand] Analyzing Ext JS Apps with Chrome Performance Tools Even the best-built application is bound to experience the occasional dip in performance—if you’ve ever clicked a button or selected a row in a grid in an Ext JS app, only for it to take longer than desired for the action to complete, you know what we’re talking about. Fortunately, Chrome developer tools enable devs to diagnose what’s hindering their application’s performance—and we’re here to show you how to utilize them. Sencha product expert Marc Gusmano provided an in-depth look at the performance panel and how you can apply this tool to your own application—check it out! [Watch On-Demand]   [Product Release] Blazing Fast Web App Development for ASP.NET—Ext.NET Has Arrived Building great looking and blazing fast web apps with ASP.NET Core technology and Ext JS has never been easier! Our team is excited to introduce Sencha Ext.NET—an advanced ASP.NET Core UI framework that incorporates the powerful component library for efficient and scalable web & mobile app development. If you’re an ASP.NET dev, Ext.NET is the perfect choice for your app development: Drop-and-go components Cross-browser & Cross-platform support Simplified client-to-server communication Flexible layout manager and responsive config system Out-of-the-box modern themes And so much more! Learn everything there is to know about the latest addition to our Sencha product suite by checking out the release blog: [Read the Release Blog]   [Webinar On-Demand] How and When to Use Trees in Your Ext JS App Trees are an essential component for Ext JS developers to utilize when showing grouped, hierarchical, and drill-down data—and we want to enable you to do just that. Sencha product expert Max Rahder returned by popular demand to host a live demonstration where Ext JS devs learned to configure trees, organize and detch tree data, update and manipulate tree nodes, use tree plugins, and more for both the modern and classic toolkits. The whole presentation is available to view at your leisure—check it out! [Watch On-Demand]   [Free Guide] Secure Your Software Pipeline with a Safer Front-end The deepest concern haunting most enterprises is the security aspect of software development—particularly around security monitoring, maintenance and ownership.  Threats to mission-critical applications need immediate intervention and can add more time, money and resources to an already complex software pipeline. In our latest free guide, Securing Your Software Pipeline with a Safer Front-end Framework Solution, you’ll learn what security vulnerabilities are, what types of vulnerabilities you need to be on the lookout for with open source, and how adopting a safer front-end framework solution could protect your application development. [Get Your Free Copy]   [Video Guide] Getting Started with Ext JS in 3 Easy Steps Getting started with the latest and greatest version of Ext JS has never been easier—our new video guide is here to walk you through the […]

Read More