Noutați

What You Need To Know About TabOrder And Cross Platform Apps

Developers often get requests to create forms where it is crucial to pay attention to the position of a cursor after the Tab key is pressed at every point of the program execution. This can be particularly important when developing cross platform apps where following user’s expectations of how user interfaces should behave can help make your app seem professional. It can be important from different perspectives, including user experience, client’s requirements, and important things like functionality. Delphi provides wide opportunities for this thanks to the implementation of the “TabOrder” property. In this article, we offer you to take a closer look at the TabOrder property in Delphi, to analyze how it’s supported, how it can be used and to see whether there are any limitations. What is a taborder and what does it do? The TabOrder property has been a part of Delphi since the release of Delphi 1. In earlier versions of Delphi, TabOrder was a part of the VCL hierarchy while in newer versions it is a part of FMX with small changes in the hierarchy. When the Tab key is pressed, the focus moves from one control to the next one. Due to the peculiarities of their design, not all controls can receive focus (E.g. TLabel) and not all controls can participate in the tab navigation. Even controls that can receive focus must be explicitly included in the tab sequence. In VCL, TabOrder is defined in the TWinControl class that normally unites components that are derived ultimately from the TWinControl class and will have the TabOrder property. Below you can see a typical declaration of the TabOrder property in the TWinControl class. property TabOrder: TTabOrder read GetTabOrder write SetTabOrder; TTabOrder is defined as an Enumeration that can contain values from -1 to 32767. Controls with a TabOrder value that equals -1 will be skipped during the Tab Ordering when the tab key is pressed. How is taborder different in a cross-platform app? In FMX, TabOrder is a part of the TControl class and is declared similar to the TWinControl class in VCL as described above. There is one more property named TabStop which determines whether a control will receive focus or not depending on the TabStop property value. Controls with a TabStop value that is False will not receive focus regardless of their TabOrder value. This principle is similar to the cases when the TabOrder value equals -1. As per the Embarcadero documentation, the TabOrder property is indicated as the position of the control in its parent’s tab order. This means that each parent control will have its own list of Tab Orders. An ultimate parent form that has all controls sitting over it also contains a list of tab orders for all controls (except the ones which are children of other controls on the same form). The control on the parent form which has a TabOrder set to 0 will have focus when the form first appears. Initially, when you create components at the design time, the tab order is always the order in which controls were added to the form. The first control added to the form has a TabOrder value of 0, the second one’s value equals 1,  the third one has a value of 2, and so on. As we have seen […]

Read More

Everything You Should Know About Windows Subsystem for Android in Windows 11

Probably one of the most exciting new features of Windows 11 is the addition of the Windows Subsystem for Android (WSA). This enables your Windows 11 device to run Android applications that are available in the Amazon Appstore. This new feature is extremely beneficial for both end-users and developers. Similar to Windows Subsystem for Linux (WSL), WSA makes cross platform development of Android apps on Windows easier and more manageable. In this video, Jim McKeeth and Scott Hanselman will discuss everything about WSA from the perspective of developers. How to set up WSA and use it for cross platform development This webinar is hosted by Embarcadero’s Developer Advocate Jim McKeeth and Microsoft’s Partner Program Manager Scott Hanselman to discuss the newly added Windows Subsystem for Android feature in Windows 11 from the developer’s perspective. WSA is indeed a great advantage for end-users because it finally allows them to access their favorite apps using the Windows operating system via Amazon App Store. This also means that they do not need any third-party emulators like BlueStacks or NOX to access their apps straight from their PC. However, how does this feature weigh-in for app developers? Watch the video for a ton of Windows cross platform development tips The discussion will take a deep dive into WSA from the process of installation to the easiest way to configure WSA for Android for use in software development. See what is required to run WSA as well as what is required to target it from your Android development. WSA is available for public preview on Windows 11 and you will be asked to download the Amazon App Store from the Microsoft store to download your favorite apps. What is the Houdini software and how does it help cross platform development? The video will also briefly highlight Houdini, a 3D animation software application for app developers. We will also get details about ADB (Android Debug Bridge), a command-line tool included in the Android SDK development kit. With the help of the Android Debug bridge, you can install custom ROMs, mods, GApps, backup Android, flash official stock firmware, and install Android apps. Here, we will get some important ADB sideload commands. To know more about WSA in Windows 11, feel free to check the video below.  

Read More

Manager of France’s .fr domain selects GitLab for its DevSecOps capabilities

Association Française pour le Nommage Internet en Coopération (Afnic) is a longstanding nonprofit in France that manages .fr domain names. Chosen 20 years ago by the French State to operate the .fr country code top-level domain, Afnic’s motto is “reliability first.” Afnic uses GitLab, The One DevOps Platform, to help sustain that motto through modernization of its software development environment. Afnic’s mission as the French National Top Level Domain Registry is to bring together public authorities, Internet users, and domain name professionals to build a secure and stable Internet, open to innovation and in which the French Internet community plays a leading role. Outages of such a digital service could prevent the provisioning of other services that rely on it and could thus have an impact on key economic and societal activities. Afnic started using GitLab about four years ago to build and secure the brand-new version of its Shared Registry System (SRS). The SRS is a platform that manages the domain names from the subscription of a domain name to the publication in the DNS database and all the updates during its life, including contacts, server names, and DNSSEC keys, according to Richard Coffre, Afnic’s principal product manager. Since the project began, all the technologies have changed. Previously, Afnic’s team was mainly using Java and Perl and now they use Kubernetes, Angular, the latest version of Java, and Docker, among others. Security is paramount, and the team is using private clouds. That means Afnic has its own data centers in France and in colocation facilities all over the world. Modernizing software development with automation and integration Afnic selected GitLab to automate and integrate processes during the deployment process. Previously, the majority of things were done manually and now Afnic’s team wants to follow DevSecOps philosophy and governance. They wanted one DevOps platform with state-of-the-art CI/CD capabilities, the ability to quickly onboard new developers, and features to improve compliance and monitoring functionality. Now, Gitlab is one of the core components of Afnic’s systems. The company’s use of GitLab expanded as they deployed new versions of Java and Docker and other technologies. “We wanted to take a big step to align our technology with the state of the market,” Coffre says, and after surveying the development team, the choice was GitLab. The team is integrating GitLab with Jira, which is providing a lot of value, he adds. Now, in addition to developers, Afnic’s database administrators and network administrators use GitLab. The team is using Docker for images and Ansible. Jira is used for ticketing issues and is linked to GitLab and Confluence as a wiki to create the documentation. What GitLab brings to the table The goal for Afnic is to increase automation and to have everything in the same place and for anyone to be able to get at the proper version anytime. “That’s the strength of GitLab,” Coffre says. “That’s also why we chose it because it’s one of the leaders. Like many modern source code management systems, GitLab allows our developers to concurrently create source code. But it does it easily, giving us the possibility to do it safely, remembering our motto.” Previously Afnic used only open source tools that they had to customize, which Coffre says was not efficient on a daily basis. To manage source code […]

Read More

GitLab provides small business with a professional, mature DevOps platform

Blonk is an international leader in the field of environmental and sustainability research in the agri-food sector. But as a small business without a QA team or a security team, the challenge was figuring out how to deliver professional software with only a few developers. Blonk used an external company to help set up what Bart Durlinger, product development manager, and software devevloper Pieter van de Vijver envisioned as its platform at the time. “They set up an environment on Amazon, a separate built server, a separate repository, and then some scripts in between to link it all together,” Durlinger recalls. “But when we decided to take more control, that was just too complex. We had too many different parts in many different places. We didn’t have the capacity at the time to really oversee how this should all work together.” That’s when the Blonk team started looking for platforms that offered a more integrated approach, with project management, CI/CD, repository, and version control features all in one place. Mature, with a modern vision of software development Blonk turned to GitLab after finding that the platform “had a lot of the things you need to have a professional delivery pipeline integrated into one solution,” says Durlinger. At the time, the consultancy was using GitHub, which was more expensive, he says. When Blonk started with GitLab, the platform was free, which was a big factor in its selection, van de Vijver says. “But it was also an up-and-coming startup with a vision of that CI/CD integration built into how you envisioned the whole service itself,” he says. “GitHub was more of a repository that might provide you with those things, but it required more manual setup.” Blonk liked that GitLab was a mature and stable solution “but still new enough to have a vision of how software is approached nowadays with easy setup and an integrated pipeline by default, and useful branching strategies by which you could support a multi-level, multi-stage deployment process easily,” Van de Vijver says. At the time Van de Vijver was the only one at Blonk with a background as a software developer, and another bonus was his familiarity with all the tools in GitLab. “By using GitLab, we could hit the ground running, and keep the scale small. You don’t have to worry about all kinds of CI/CD operations and integrations and the configuration of that but use it just out of the box,” he says. How Blonk is utilizing GitLab today Currently, Blonk has 38 GitLab premium licenses, about half of which are used by software developers. The rest are used by data scientists, consultants, project managers, and others, so there are different ways the platform is utilized within the company; that also means there are different levels of software literacy but that hasn’t been an issue. The software development team has been onboarding very junior developers over the past couple of months, and “never have I had questions of how to do stuff in GitLab, because the platform is very intuitive,” Durlinger says. The software development team has been integrated further into the core business, which also fits nicely with GitLab’s services, including the milestones Blonk uses as well as its repositories and project management strategies. “Also data scientists and methodology developers are now […]

Read More

GitLab extends Omnibus package signing key expiration by one year

GitLab uses a GPG key to sign all Omnibus packages created within the CI pipelines to insure that the packages have not been tampered with. This key is seperate from the repository metadata signing key used by package managers and the GPG signing key for the GitLab Runner. The Omnibus package signing key is set to expire on July 1, 2022 and will be extended to expire on July 1, 2023 instead. Why are we extending the deadline? The Omnibus package signing key’s expiration is extended each year to comply with GitLab security policies and to limit the exposure should the key become compromised. The key’s expiration is extended instead of rotating to a new key to be less disruptive for users who do verify package integrity checks prior to installing the package. What do I need to do? The only action that needs to be taken is to update your copy of the package signing key if you validate the signatures on the Omnibus packages that GitLab distributes. The package signing key is not the key that signs the repository metadata used by the OS package managers like apt or yum. Unless you are specifically verifying the package signatures or have configured your package manager to verify the package signatures, there is no action needed on your part to continue installing Omnibus packages. More information concerning verification of the package signatures is available in the Omnibus documentation. If you just need to refresh a copy of the public key, then you can find it on any of the GPG keyservers by searching for support@gitlab.com or using the key ID of DBEF 8977 4DDB 9EB3 7D9F C3A0 3CFC F9BA F27E AB47. Alternatively you could download it directly from packages.gitlab.com using the URL: https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg What do I do if I still have problems? Please open an issue in the omnibus-gitlab issue tracker. Sign up for GitLab’s twice-monthly newsletter

Read More

Cryptocurrency tracking in Delphi with FNC Chart

We, as developers, seek for new exciting APIs, new components that offer that little bit extra, or something completely new and mindblowing. As component developers, it’s a daily quest to put new and exciting features into our components, and offer them to our customers. Now, the FNC framework offers a lot of components to complete various tasks. Even when being excited to create a lot of new components, it’s often good to reflect on what has been done already and see where we can improve. TMS FNC Chart was the first FNC product and was an introduction into cross-platform, cross-framework and cross-IDE development. At the time it was released, VCL and FMX were supported. Later we added Lazarus, and TMS WEB Core support. More time was required to support multiple frameworks and operating systems and iron out all the differences. We immediately had an idea to create more UI components which resulted in the variety of FNC framework based component sets we have today. Meanwhile, we decided it was time to go back to the beginning, to our very first FNC product and see what can be improved. Today, we want to reveal some new and exciting features coming up in v2.0 as well as a small sample on what that means for you as a customer/developer. TMS FNC Chart v2.0  Coming up in v2.0 Inherited types: TTMSFNCChart was the only component available, and the series types had to be changed there, each time a new instance of TTMSFNCChart was used. In v2.0 we introduce inherited types, which means that there will be a descendant class type for each series type, for example: TTMSFNCBarChart, TTMSFNCLineChart, TTMSFNCPieChart, … . Using these new set of classes will preset the series type upon creation, adding new series will also be the correct type and there is a designtime preview that will resemble more what the chosen type should represent. Appearance & color themes: The chart displays various elements such as a title, x-axis, y-axis and each of those elements can be customized with a lot of properties. Changing the overal look & feel of the chart can take quite some time. In v2.0 we want to introduce a global appearance, which applies font name, color and the ability to up-scale all fonts in the chart in one go. Additionally, we also wanted to make the chart more color friendly and dynamic. 2.0 introduces a new custom color list, excel style and monochromatic colors. Data import: The chart can obviously visualize data. The data comes from various source types and currently, there are no helper methods of any kind to makes this possible. In v2.0 it will be possible to load data from CSV, JSON and predefined data arrays with a lot of customization options. Database support: In v2.0 we also bring read-only database support. The TTMSFNCChartDatabaseAdapter will be available as a separate component and will dynamically recognize fields as series with the flexibility of adding further customization.  Grid linking: In the TMS FNC UI Pack, we have the TTMSFNCGrid component. In v2.0 it will be possible to link the grid to the chart via the TTMSFNCChartGridAdapter component. An example based on cryptocurrency Cryptocurrency is hot topic and, in one way or another, keeps us occupied, interested at the very least. Looking up various known and […]

Read More

Faces of Unity – Sharlene Tan

I’d encourage others to keep an open mind and never stop learning. Back when I was a college student, I never imagined that I’d wind up in the video game industry, working with languages and the written word. As technology evolves, it’s hard to predict what jobs will be in demand 10 years down the road. I’m glad my career journey led me to where I am now. Can you share a few fun facts about yourself? I was born and raised in Singapore, but have lived in many different places: Austin, Houston, Dallas, Hakodate, Tokyo, Oita, and currently, Seattle. I enjoy translating Japanese song lyrics into English, and also really love karaoke. I’ve run into Jackie Chan twice – once in a hotel in Canada, and another time in South Africa. He was filming Who Am I? atop Table Mountain.

Read More

How To Get Cross Platform Apps To Connect To A MySQL Database

Whether you are working with small or large-scale databases, MySQL is probably one of the most popular database systems today. The webinar video below will take us back to CodeRage 2018 where Yilmaz Yoru will discuss the process of creating a MySQL Database and connecting the database using the MyDAC components through C++ Builder. MySQL is undeniably one of the most popular database servers and has been part of many windows application development projects. Thanks to its free Community Edition, the server is relatively more accessible than other open-source database systems in the market. How to connect to a MySQL Database using MyDAC Components? Normally, if you are using C++ Builder, you can connect MySQL Database using the official FireDAC component, a powerful Universal Data Access library that is a relatively easier-to-use access layer that supports, abstracts, and simplifies data access, providing all the features needed to build real-world high-load applications. However, there are also third-party components that you can use and this is where Devart’s MyDAC comes into play. MyDAC is a library of components that provides direct access to MySQL and MariaDB from Delphi and C++Builder on various Operating systems like Windows, Linux, macOS, iOS, and Android for both 32-bit and 64-bit platforms. To use MyDAC with C++ Builder, first, you must download a trial or purchased version from their site and you must install it for both VCL and FireMonkey Projects. In this video, Yilmaz will demonstrate how to create a new MySQL Database with a New User on a host server. It will also encourage you to install MySQL Workbench for table creation. In this webinar, all will be explained by a C++ Builder example. MyDAC is a good component to connect MySQL database for all platforms. It also supports the FireMonkey platform, which allows you to develop visually spectacular high-performance desktop and mobile native applications. To learn more about connecting MySQL databases using MyDAC components, feel free to watch the video below.

Read More

Three ways the current paradigm shifts in technology are shaping the future of industry

Digital twins, based on 4IR technologies, are a critical enabler for Web3 in industry. These are already in use with various levels of completeness in many industries to help organizations understand system flows, anticipate maintenance needs, reduce operational costs, and enhance overall efficiencies. “Ideally you want Web3 to revolutionize your end-to-end workflows, across the board, for every person in your organization. But I think it’s more the case that we will find pockets of traction, where somebody can get started despite the significant headwinds that are facing us.” – Matt Fleckenstein, Sr. Director, Product Management, Microsoft Mesh, Microsoft  Being a leader of innovation, Vancouver Airport Authority (YVR) wanted to reinvent itself as a gateway for learning, innovation and movement of new ideas in industries beyond aviation. The result was a digital twin of its terminal and airfield on Sea Island.  The digital twin of YVR’s facilities helps solve challenges such as training, optimization, testing, evaluating environmental impact, and planning for the future – all while enabling the airport to operate without interruption. Designed with a “people-first” mindset, YVR’s digital twin offers significant benefits to airport employees, as well as the community at large.

Read More

Unity and .NET, what’s next?

.NET Standard 2.1 support in Unity 2021 LTS enables us to start modernizing the Unity runtime in a number of ways. We are currently working on two improvements. Improving the async/await programming model. Async/await is a fundamental programming approach to writing gameplay code that must wait for an asynchronous operation to complete without blocking the engine mainloop.  In 2011, before async/await was mainstream in .NET, Unity introduced asynchronous operations with iterator-based coroutines, but this approach is incompatible with async/await and can be less efficient. In the meantime, .NET Standard 2.1 has been improving the support of async/await in C# and .NET with the introduction of a more efficient handling of async/await operations via ValueTask, and by allowing your own task-like system via AsyncMethodBuilder.  We can now leverage these improvements, so we’re working on enabling the usage of async/await with existing asynchronous operations in Unity (such as waiting for the next frame or waiting for a UnityWebRequest completion). As a first step, we’re improving the support for canceling pending asynchronous tasks when a MonoBehavior is being destroyed or when exiting Play mode by using cancellation tokens. We have also been working closely with our biggest community contributors, such as the author of UniTask, to ensure that they will be able to leverage these new functionalities. Reducing memory allocations and copies by leveraging Span. Because Unity is a C++ engine with a C# Scripting layer, there’s a lot of data being exchanged between the two. This can be inefficient since it often requires either copying data back and forth or allocating new managed objects.  Span was introduced in C# 7.2 to improve such scenarios and is available by default in .NET Standard 2.1. In recent years, you might have heard or read about many significant performance improvements made to the .NET Runtime thanks to Span (see improvements details in .NET Core 2.1, .NET Core 3.0, .NET 6, .NET 6). We want to leverage its usage in Unity since this will help to reduce allocations and, consequently, Garbage Collection pauses while improving the overall performance of many APIs.

Read More