TMS Software. All-Access

Discover the Abstract IP Geolocation API with FNC

Intro You would be amazed to find out how much detailed and accurate information you can retrieve from an IP address. Collecting data based on the IP address can be key to various parts of your business. Want to know where your customers are located during an online meeting? Want to include this technology in your application to gather statistical data and don’t know exactly how to get started? The TTMSFNCCloudIPLocalization component (part of the TMS FNC Cloud Pack) is designed to retrieve detailed and accurate information from an IP address and is capable of doing this via the IP Geolocation API from Abstract. The TTMSFNCCloudIPLocalization component is able to retrieve the following information from an IP address. Country name, code & flag image Region name & code Virtual Private Network (VPN) detection Internet Service Provider (ISP) information Latitude & Longitude Timezone information Getting Started The code snippets below are based on the IP Geolocation API from Abstract to retrieve the information we want to visualize. To get started, you will need to create a free account. After logging in, go to dashboard, select IP Geolocation. The process only takes a couple of seconds, afterwards you can copy the API key which is required to work with the TTMSFNCIPLocalization component. Below you can see the page you get after setting up your account. The above steps is all we need to do get started with the TTMSFNCIPLocalization component. Drop an instance of TTMSFNCIPLocalization on the form. Set the API key and set the service property. (Replace ‘MyAPIKey’ with a valid API key). TMSFNCCloudIPLocalization1.APIKey := ‘MyAPIKey’; TMSFNCCloudIPLocalization1.Service := ipsAbstractAPI; TMSFNCCloudIPLocalization1.OnGetIP := DoGetIP; After assigning the OnGetIP event, add a button with the following code to retrieve your own IP address. TMSFNCCloudIPLocalization1.GetIP; Alternatively, you can also add a custom IP address. This can be done with the following code. (Replace ‘x.x.x.x’ with a valid IP address) TMSFNCCloudIPLocalization1.GetIP(‘x.x.x.x’); After clicking the button, calling the GetIP procedure, the OnGetIP event will be triggered. In this event, we have immediate access to the information retreive from the IP address. Backtracing which IP address was requested can be done via AIP.IPAddress procedure TGetIPDataForm.DoGetIP(Sender: TObject; AIP: TTMSFNCCloudIPLocalizationIP; AError: Boolean; const ARequestResult: TTMSFNCCloudBaseRequestResult); begin //retrieve IP address information via the AIP parameter end; Below is an overview of the properties that are available when using the AIP parameter after the request has finished executing. Demo Included in the distribution is a demo, which shows the capabilities of the TTMSFNCCloudIPLocalization component. Below is a screenshot of the demo in action. Note that the IP address and coordinates have been blurred for privacy reasons. Additional Services The blog post focuses on the IP Geolocation API from Abstract, but the TTMSFNCCloudIPLocalization component is also capable of connecting to the following additional services. The account creation and API retrieval process is different for each service, but the way the component operates remains identical. To select one of the other services, set the Service property to either ipsIPData or ipsIPStack and set the API key for that specific service. IPData IPStack Available Today! The TTMSFNCCloudIPLocalization component is available in the latest update, available today. So go ahead and download the latest version of the TMS FNC Cloud Pack. The TMS FNC Cloud Pack is part of the FNC family, so as a reminder, below is an overview […]

Read More

Stay on top of what’s happening in the Delphi world with new webinars in October

The Delphi train is unstoppable. Not only did Embarcadero bring a brand new Delphi 11 with tons of valuable new features, our team also worked around the clock to keep bringing useful add-ons to get even more out of Delphi. Here is your chance to stay on top of this with three webinars we have scheduled in October so far: The Aurelius dictionary : Oct 7, 2021 4h00PM UTC / 18h00 CET Learn more about the brand new TMS Aurelius dictionary feature, and how it will bring even more capabilities to your favorite ORM framework for Delphi. Get compile-time errors, check for dictionary validation and make your database queries even easier to build.In short, a webinar that is not to miss for anyone pondering about adding ORM technology to existing applications or get even more out of Aurelius based applications! Your host is Wagner Landgraf, the architect and product manager for TMS Aurelius. Register here now! The new WX pack, new territories open for your Delphi apps : Oct 12, 2021 3h00PM UTC / 17h00 CET WX Pack controls bring a brand new approach to leverage existing non-trivial and complex components and libraries for Delphi VCL Windows applications, cross-platform FireMonkey applications or web client apps. Among the first such components in WX Pack will be: PDF viewer, QR code generator, barcode generator, text to speech, OCR, JSON viewer, …  Learn about the architecture of the new WX controls and see how these are universal and work in VCL, FMX, LCL or WEB Core apps. See the first WX controls in action. We will show also new WX controls in development, what further WX controls we have on our radar and we listen to your questions and inputs, suggestions for more WX controls. Your host is Bruno Fierens, CTO of tmssoftware.com.  Register here now! Miletus brings creating Raspberry Pi apps from your Delphi IDE : Oct 19, 2021 3h00PM UTC / 17h00 CET Miletus technology now also enables you to create applications running directly on the Raspberry Pi SBC. And this all directly from the Delphi IDE. And of course, from the Miletus application, you can control various hardware accessories via the i²c, SPI or UART on the Raspberry Pi. Discover how Miletus will empower you to bring Raspberry Pi apps from the Delphi IDE in this webinar!  Your host is Bruno Fierens, CTO of tmssoftware.com.  Register here now! TMS WEB Academy All webinars will be brought to you via the TMS WEB Academy. Our TMS WEB Academy is our platform, fully created with TMS WEB Core to host webinars for you. During the webinars, interaction is encouraged, you can ask questions via messages or directly spoken and when extra resources are coupled with the webinar content, these will also be live shared during the webinar.

Read More

Miletus brings Raspberry Pi target in Delphi

Last week, we showed a first glimpse in our lab where we demonstrated building a Raspberry Pi application from the Delphi IDE using Miletus. Today, we have a closer look at some of the new components as well as an extra video. Creating a new Miletus Raspberry Pi app From the IDE, simply select TMS WEB Miletus Application: Now, in the project manager, under build targets, you see all the build targets Miletus offers. And there you have Raspberry Pi debug and release new targets.  With this Miletus project created and the Raspberry Pi target selected, you are ready to create your first Miletus application. XCOPY deployment When you compile the Miletus for Raspberry Pi project from the Delphi IDE, you’ll find the generated application and Raspberry Pi OS desktop shortcut link file in the output folder. Just XCOPY these 2 files to your Raspberry Pi with the Raspberry Pi OS and run the application. There is possibly just one extra step needed to prepare your Raspberry Pi to run the app and that is: sudo apt install libwebkit2gtk-4.0-dev New components While the entire array of TMS WEB Core components and TMS FNC Components is available to build a Miletus Raspberry Pi app, the Raspberry Pi target introduces three new components to access hardware attached to your Raspberry Pi SBC: You see here: TMiletusRaspberryI2C : read and write via the i²c ports to various sensors or other devices TMiletusRaspberrySPI : read and write via the SPI port to various hardware extensions using the SPI port TMiletusRaspberryUART : read and write from the UART to devices connected to the Raspberry Pi I²C I²C is a standard 2 wire protocol to communicate with devices. The Raspberry Pi offers out of the box two I²C interfaces. There is SCLK and SDA signal, i.e. the clock signal and the data signal that is open-collector based input / output. Communicating over I²C works via sending first an 8bit address and read or write bit over the SDA signal and then either write or read data bits. We exposed this in the TMiletusRaspberryI2C component via methods: TMiletusRaspberryI2C.Open; TMiletusRaspberryI2C.Close; TMiletusRaspberryI2C.ReadByte(Address:byte): TJSPromise; TMiletusRaspberryI2C.ReadSmallInt(Address:byte): TJSPromise; TMiletusRaspberryI2C.ReadBuffer(Address:byte, Size: integer): TJSPromise; Yes, you can see that the response of the read instruction is a promise as the read methods are asynchronous. Thanks to the promise based approach, we can still write sequential code to deal with reading and writing over I²C.   To write data, six methods exist TMiletusRaspberryI2C.WriteByte(Address: byte; AData: byte); TMiletusRaspberryI2C.WriteByteP(Address: byte; AData: byte): TJSPromise; TMiletusRaspberryI2C1.WriteAddress(Address: byte); TMiletusRaspberryI2C1.WriteAddressP(Address: byte): TJSPromise; TMiletusRaspberryI2C1.WriteBuffer(AData: Array of byte; ASize: integer); TMiletusRaspberryI2C1.WriteBufferP(AData: Array of byte; ASize: integer): TJSPromise As you can see, you can write a byte to some specific address or write an address followed by a buffer of data. The methods are all asynchronous and a promise based variant exists to allow to create sequential code. This code snippet shows how to write two register values from an I²C device in a sequential way thanks to await()   ac1 := await(Integer, MiletusRaspberryI2C1.ReadSmallInt($AA));   ac2 := await(Integer, MiletusRaspberryI2C1.ReadSmallInt($AC)); SPI The SPI protocol (Serial peripheral interface) uses a 3-wire connection, a clock and the data-in and data-out signal. Other than this, it is similar to I²C, meaning, it also uses an address and reads and writes data serialized over this 2 data wires. The methods for […]

Read More

Quadruple your number of components for TMS WEB Core on Windows, macOS or Linux

Background One of the many reasons to develop TMS WEB Core for Visual Studio Code was that you could use this highly popular development environment directly on your favorite desktop Windows, macOS or Linux system. And this without any virtualization software! With this mission accomplished, a next goal was to bring our wide portfolio of TMS WEB Core enabled FNC components to TMS WEB Core for Visual Studio Code on any of these platforms.  The entire range of TMS FNC Components was already for some time available for Delphi developers on the Windows operating system. That means, when you have TMS WEB Core installed in the IDE and you install any of the TMS FNC Components using its installer, these components also become automatically available for use in TMS WEB Core web client applications or Miletus desktop applications.  Now, with TMS WEB Core for Visual Studio Code running on a macOS or Linux machine, this was somewhat more problematic. Our FNC component installer is an executable designed for Windows that does not work out of the box for macOS or Linux. Enthusiast TMS WEB Core for Visual Studio Code users did the cumbersome extra effort to find a Windows machine, install it there and then manually move over the files and install in Visual Studio Code. A new easy way to install FNC components But from today, this inconvenience is all a thing of the past! We’re pleased to announced that the full portfolio of TMS FNC Products is now also available both for trial and registered versions as simple ZIP file distributions that can be used from any desktop operating system. Simply unpack, pick from Visual Studio Code the folder where the ZIP file was extracted and pick the package to install it in the IDE. Done! Our colleague and evangelist Holger Flick has it for you all explained and demonstrated in the video he created especially for this: What do you get today? From today, you can easily install following FNC component as trial version or as registered version in TMS WEB Core for Visual Studio Code: TMS FNC Chart : business, statistical, financial & scientific data TMS FNC Dashboard Pack : dashboard UI controls TMS FNC Maps : the world of mapping services, directions, geolocation, … in your hands TMS FNC UI Pack : sophisticated UI controls including grid, planner, ribbon, treeview, navigation, … And it doesn’t end there! You have most likely seen the announcement of our new WX technology that encapsulates web technology for any type of Delphi application or TMS WEB Core application. Our upcoming TMS FNC WX Pack is also already enabled for easy install in TMS WEB Core for Visual Studio Code.  And on top of this, in the future we want to make it even easier than this as we are researching right now to use the Microsoft Visual Studio Code Market Place for FNC component distribution. With this in-place, you’ll have the ultimate experience, that is: an IDE that takes care itself of always keeping your components automatically up-to-date.  Stay tuned! There is a lot more in the pipeline and never-seen-before developments we will soon unveil.

Read More

Huh, Raspberry Pi app from the Delphi IDE?!?

Excitement Before we dive into more technical details and bring a first beta build with this new milestone reached, we just wanted to brighten up your day and share on this gray, cold, rainy Thursday our excitement in the lab. Excitement because months of R&D work result today in closing the circle and having the ability to simply select from our Delphi IDE a new target : Raspberry Pi and then XCOPY the app and run it directly from the Raspberry Pi, including accessing all sorts of hardware hooked up to this small SBC. It goes without saying this concerns an app written 100% in Object Pascal with a RAD component based methodology and as a bonus with a couple of our FNC components and using the Miletus technology of TMS WEB Core. Expect more details coming, but enjoy for now this first glimpse:

Read More

To be (live) or not to be (live): a poll

Ever since the covid-19 pandemie caused the first lockdown in March 2020, we did not organize and did not participate in any live Delphi related event. Instead, we embarked on a new project, the TMS Web Academy to reach out to you, to create our own platform where we have full control and to prove the strength of TMS WEB Core to create web applications. We launched the TMS Web Academy in the beginning of this year successfully. The number of participants to the number of webinars we already offered exceeded our expectations.  It’s clear that the TMS Web Academy is here to stay. But it is also clear there is no substitute for real in person and face to face meeting with fellow Delphi developers.  For a long time and till now, the uncertainty about new possible lockdowns withheld us from setting up a new live event.  In Belgium, the country where the main office of TMS software is located, there is a high degree of vaccination and it appears that restrictions keep diminishing. And that makes us reflect about new possibilities for a live event.  The sole purpose of this blog post is to feel how this resonates with you, as possible attendee of a live TMS training day. So, in a nutshell, with this poll you can indicate how you feel about this. The idea we play with is a TMS training day about the newest TMS WEB Core and TMS FNC developments. As a location, we think about Bruges, the venice of the North with easy access by highway, train, airports in Ostend & Brussels and a one of a kind authentic and historic heart of the city.  We are very curious to hear how you feel about this! Please fill-in this poll or add any remarks about how you think about live events in the comments!

Read More

Lazarus Linux support for FNC webbrowser

Intro Up until now, the only way to use the TTMSFNCWebBrowser in a Linux environment was through FMXLinux. Today, we can proudly announce official Linux support through Lazarus as well. A couple of FNC products were already working in Linux, but the browser based components, such as the TTMSFNCWebBrowser and the TTMSFNCMaps components (& descendants) were not working. We have been working hard the past months to make our browser based products ready for Linux. With Linux support through Lazarus, we add yet again a new platform to the wide variety of already supported platforms in FNC. 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 Getting Started The components have been tested and deployed on a Linux environment (Ubuntu 20.04) after properly setting up Lazarus and other dependencies required for various parts of FNC. To setup your Linux environment please execute the following commands sudo apt install joe wget p7zip-full curl openssh-server build-essential zlib1g-dev libcurl4-gnutls-dev libncurses5 sudo apt-get install zlib1g-dev sudo apt install libgl1-mesa-glx libglu1-mesa libgtk-3-common libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 sudo apt install libwebkit2gtk-4.0-dev Uninstall previously installed FNC packages and rebuild the Lazarus IDE. Remove LIB folders generated in the source directory. During compilation of dependant packages, checksum errors might appear. If this is the case, follow the exact steps below. LCLTMSFNCCorePkg.lpk >> Install LCLTMSFNCCorePkgDE.lpk >> Install >> Error LCLTMSFNCCorePkg.lpk >> Only compile LCLTMSFNCCorePkgDE.lpk >> Install >> OK LCLTMSFNCMapsPkg.lpk >> Install LCLTMSFNCMapsPkgDE.lpk >> Install >> Error LCLTMSFNCMapsPkg.lpk>> Only compile LCLTMSFNCMapsPkgDE.lpk >> Install >> OK Repeat steps 5-8 for other FNC products if necessary GTK 3.0 Note that the TTMSFNCWebBrowser is relying on GTK 3.0 as a minimum. By default Lazarus applications target GTK 2.0. To change this, select “Project Options”, go to “Additions and Overrides”, and change the default “LCLWidgetType” to GTK 3.0 Start the application to explore the capabilities of the TTMSFNCWebBrowser TMS FNC Maps Lazarus Linux support for TTMSFNCWebBrowser also means the TMS FNC Maps component set is available. Below is a screenshot of one of the demos in action. Stay tuned! With Linux support through Lazarus we add yet another major and exciting platform to the already huge amount of platforms FNC has to offer. Stay tuned for more FNC improvements and features coming up in the near future!.

Read More

TMS FNC Maps v2.1: Introducing OverlayViews

The new TMS FNC Maps update includes support for OverlayViews. This is a heavily improved equivalent of the Marker Labels functionality in TMS VCL WebGMaps and TMS FMX WebGMaps. OverlayViews are a Google Maps API specific functionality and therefore currently only available in TTMSFNCGoogleMaps. OverlayViews can be positioned anywhere on the map and support HTML tags. 3 ways to use OverlayViews 1. Connected to a Marker The OverlayView is automatically displayed below an existing Marker and functions as a Marker Label.  In code, adding a call to AddOverlayView on an existing Marker with the text that goes in to the OverlayView as a parameter value is all that is needed. var m: TTMSFNCGoogleMapsMarker; begin TMSFNCGoogleMaps1.BeginUpdate; m := TTMSFNCGoogleMapsMarker(TMSFNCGoogleMaps1.AddMarker(TMSFNCGoogleMaps1.Options.DefaultLatitude, TMSFNCGoogleMaps1.Options.DefaultLongitude)); m.AddOverlayView(‘Hello World!This is an OverlayView.’); TMSFNCGoogleMaps1.EndUpdate; 2. Positioned at a fixed Coordinate The OverlayView is positioned at a fixed coordinate on the map. The size of the OverlayView remains fixed regardless of the map’s zoom level. In code, setting the Latitude and Longitude coordinates will position the OverlayView at that exact location on the map. var ov: TTMSFNCGoogleMapsOverlayView; begin TMSFNCGoogleMaps1.BeginUpdate; ov := TMSFNCGoogleMaps1.AddOverlayView; ov.CoordinatePosition := cpCenterCenter; ov.Coordinate.Latitude := TMSFNCGoogleMaps1.Options.DefaultLatitude; ov.Coordinate.Longitude := TMSFNCGoogleMaps1.Options.DefaultLongitude; ov.Padding := 5; ov.Width := 500; ov.Text := ” + ‘Uluru’+ ”+ ‘Uluru, also referred to as Ayers Rock, is a large ‘ + ‘sandstone rock formation in the southern part of the ‘+ ‘Northern Territory, central Australia. It lies 335 km (208 mi) ‘+ ‘south west of the nearest large town, Alice Springs; 450 km ‘+ ‘(280 mi) by road. Kata Tjuta and Uluru are the two major ‘+ ‘features of the Uluru – Kata Tjuta National Park. Uluru is ‘+ ‘sacred to the Pitjantjatjara and Yankunytjatjara, the ‘+ ‘Aboriginal people of the area. It has many springs, waterholes, ‘+ ‘rock caves and ancient paintings. Uluru is listed as a World ‘+ ‘Heritage Site.’+ ” + ‘Attribution: Uluru, ‘+ ‘https://en.wikipedia.org/w/index.php?title=Uluru ‘+ ‘(last visited June 22, 2021).’+ ”; TMSFNCGoogleMaps1.EndUpdate; 3. Positioned between preset Bounds The OverlayView is positioned between fixed Bounds coordinates on the map and the size changes depending on the map’s zoom level. When the map is zoomed out, the size of the OverlayView image automatically adapts to keep it inside the Bounds coordinates. In code, set the OverlayView Mode to omBounds to keep it positioned and sized between the Bounds coordinates.In this example an image is used to display a different style of map at that location. To make sure the image fills the entire available space,  it’s width and height must be set to 100%. Optionally the Padding, BackgroundColor, BorderColor and other configuration settings can be added. var ov: TTMSFNCGoogleMapsOverlayView; begin TMSFNCGoogleMaps1.BeginUpdate; ov := TMSFNCGoogleMaps1.AddOverlayView; ov.Mode := omBounds; ov.Text := ”; ov.Bounds.NorthEast.Latitude := 40.773941; ov.Bounds.NorthEast.Longitude := -74.12544; ov.Bounds.SouthWest.Latitude := 40.712216; ov.Bounds.SouthWest.Longitude := -74.22655; ov.Padding := 0; ov.BackgroundColor := gcNull; ov.BorderColor := gcNull; TMSFNCGoogleMaps1.EndUpdate; Available now The TMS FNC Maps v2.1 update is available now. You can download the latest version and start using the new OverlayViews feature right away!

Read More

Opening an exciting new world full of amazing resources for Delphi developers

Imagine Imagine your access to functionally useful libraries, components, controls that are hard to find in the Delphi developer community suddenly became easily available. Visualize Visualize you had no more concerns what platform or what framework to choose for developing your next solution for your customers. Dream Dream you can start adding seamlessly exciting new functionality to your existing applications. That is exactly the core goal of the brand new WX concept we reveal today with TMS FNC WX Pack. In a nutshell, WX means “Packaging Web technology in easy-to-use components for integration in any type of Delphi application“. With WX Pack, you can leverage existing Web libraries in VCL Windows applications, FMX cross-platform applications for Windows, macOS, iOS, Android & Linux, or TMS WEB Core Web applications for any device running a modern browser.   How does it work? The foundation of the WX concept is our powerful TMS FNC Browser component with its accompanying bridge technology. The FNC browser wraps the native operating system browser for the VCL, FMX, or LCL framework and offers a sort of virtual embedded browser in a TMS WEB Core Web application. This FNC browser is used to host a Web library with the choice to host it for offline or for online use. You can opt for online use to make the component lighter or offline use which means that the component will take up somewhat more size in your executable (depending on the component of course) but with the guarantee it will run fine without an Internet connection. Thanks to the FNC bridge technology, the native application-level component can communicate with the browser hosted library and vice versa. As a Delphi developer, this is all abstracted and you only deal with it at Object Pascal level as a component and its properties, methods, and events. Where do we start? There is an abundance of existing Web libraries, so where to start was the big question. The answer was simply listening to you, the user. For quite some time, among the most popular requests for new components were a barcode generator component, a QR code generating component, an HTML editor, a PDF viewer, … And so, that is exactly where we started our research and initial development to bring these components as part of the WX concept. It enables us to deliver these kinds of components in a fraction of the time otherwise needed to build them from the ground up, and it is an opportunity to leverage proven, well-tested, and widely popular existing libraries.   The first group of components In the first beta build of TMS FNC WX Pack, we have: TTMSFNCWXBarCodeThis components offers close to hundred different barcode types with lots of customization properties for these barcode types. TTMSFNCWXQRCodeComponent to generate QR codes of different type and with several customizations like logo in QR code for example TTMSFNCWXHTMLMemoEdit HTML directly with the TTMSFNCWXHTMLMemo component. It has an optional embedded format toolbar or can be used with external toolbar. Programmatic access to all formatting capabilities is available. Content is loaded and saved directly as HTML. TTMSFNCWXPDFViewer With this component on the form, you can display PDF files in your applications, including page thumbnails. There is programmatic access to navigate through pages, search text, … TTMSFNCWXCamera Access your device camera with the […]

Read More

Coming up in TMS Web Academy 2.0

The TMS Web Academy is designed to allow you to learn about our products online from your preferred place. First released in February 2021, TMS Web Academy has already come a long way since then. Focusing on giving our viewers the best experience possible, we are now ready to release TMS Web Academy v2.0. With this release there are a ton of exciting features coming your way, making our webinars the best experience they can be.  Polls Our biggest new feature is the introduction of the new Poll functionality. During a webinar we will be able to launch polls live and ask questions to our viewers. When applicable we can use this information to share it with other viewers or use feedback to improve and steer upcoming webinars. This will ensure that we continue to offer you the best experience and content possible. For now, there are 5 poll types available: Multiple Choice Single Choice Multi line Text Single line Text Rating This gives us enough freedom for now to ask tons of questions. Don’t be afraid to give us your unsalted opinion and feedback. Every answer remains strictly anonymous. After a poll, the results can be shared with the viewers if the host wishes so. This makes it more interactive and gives you an idea of what your fellow programmers are into. Think of the standard questions like what browser do you use. This will make sure the webinars are a bit more interactive. Already introduced in 1.5 is the new resources tab. Here you will find resources we share during the webinar. You can download them directly from the TMS Web Academy. This allows us to share everything you need for the webinar like presentations, projects, source code, …   With the new version 2.0 it is also possible to get a list of our viewers per country. Also this data is completely anonymous, and we can use it to pour into a map. This can be fun to share with people to see where our viewers are coming from. Yes, TMS Web Academy is an “eat your own dog food” project! It is entirely built using TMS WEB Core for Visual Studio Code. It is not only an excellent showcase of the power of TMS WEB Core but also a great learning experience for us to continue to improve the product to make it the most productive web client development tool for us Object Pascal developers. Explore and get started with TMS WEB Core for Delphi, Lazarus or Visual Studio Code today.

Read More