iOS AppStoreの1024×1024アイコン問題の回避策

6月中旬、AppleはApp Store Connect経由でのストア提出の要件の施行を開始しました。この要件は新しいものではありませんが、現在のルールでは、開発者が提出するアプリのパッケージリストの中にPNG形式の1024x1024のApp Store用アイコンを追加することを要求しています。(read more)
Read More

What is FNC?

What is FNC?

Since day 1, FNC stands for Framework Neutral Components. This means that the components can be used cross-framework and cross-platform. Below is an overview which frameworks and platforms (operating systems/browsers) are supported.

TMS FNC Components can be simultaneously used on these frameworks:

  • VCL
  • WEB
  • FMX
  • LCL

TMS FNC Components can be simultaneously used on these operating systems/browsers:

TMS FNC Controls can be simultaneously used on these IDE’s:

FNC logo (re-)design

To bundle this into a single logo that is consistent throughout our product range and website design we thought about the color gray to match the Neutral keyword in what FNC stands for. After a couple of brainstorm sessions we came up with the logo that would represent FNC in documentation, blog posts, demos, product pages, newsletters and many more.

Up until now, we always thought that the FNC logo would reflect what FNC was, and even with intensive campaigns around FNC and the FNC logo, trying to get customers to get to know FNC, there was always a slumbering thought that the logo didn’t feel right and didn’t represent what it should stand for. After all these years, it still remains a mystery for some and therefore we decided to redesign the logo and starting from today, we’ll adopt the following design.

With this new logo we feel confident that this will represent FNC in a better way as it was with the old logo. In the coming days/weeks, the new design will be distributed throughout our FNC products as well as used in various social media items, documentations and installers.

Read More

Read More

Workaround for iOS AppStore 1024×1024 Icon Issue

In the middle of June, Apple started enforcing a requirement for store submissions via App Store Connect. While the requirement is not new, in the past Apple allowed developers to add the 1024x1024 icons via the store listing, rather than as part of the app submission. Now they are requesting the icon to be part of the package, although it seems that some app updates are exempted from the rule. We plan to add direct support for the deployment in a future 10.4 update release. In the meantime, we have published a very detailed set of steps to work around the issue using RAD Studio 10.4. The steps are on the Embarcadero Quality Portal (QP) web site for the issue RSP-29692, in the comment linked here: https://quality.embarcadero.com/browse/RSP-29692?focusedCommentId=85036 While the detailed steps are fairly long, in essence what you have to do is to use an asset catalog to provide all of the icons used by your app. This is needed in addition to the Storyboard Launch Screen support provided in RAD Studio 10.4 Sydney. Here is a summary of the detailed steps: Create an asset catalog with the actual icon and image files used by the app. You can do this by starting with the asset catalog provided in the workaround, and replacing the placeholder images in the file available in the QP entry with your own images. Compile the asset catalog on your macOS computer. Transfer the files generated as part of the asset catalog compilation from the macOS host to the application project root folder. Update the Info.plist file in the project to contain the correct property keys for the App Store Connect submission. The use of the DTPlatformVersion property key has been observed as key for the App Store Connect submission. Update the project deployment list to include the proper PNG files and replace the Info.plist and Assets.car files generated by default. As a reference, Apple requirements for the different graphical elements are explained at https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/app-icon. With the detailed steps in the QP entry, you should be able to make a successful App Store Connect submission for your RAD Studio 10.4 apps.
Read More

TMS Forum becomes TMS Support Center

Support is an essential part of software development. Not only to get you up to speed if you are struggling with getting to know a new product but also if there is a problem with a product in an existing application. It is important to get good quality support when you need it.

Here at tmssoftware.com, we pride ourselves in providing the best possible support for our customers. We are constantly working on improving our support channels and one of those channels is getting a major overhaul today.

Introducing the TMS Support Center

The new TMS Support Center will replace the TMS Forum from today and includes a whole lot of new features and technical improvements.

Features

Structure

The new TMS Support Center is structured in the same way as the tmssoftware.com website. On the main page a list of categories/frameworks is displayed along with an overview of the latest topics. Pick a category to display a list of products belonging to that category. Pick a product to consult previous posts about that product or create a new topic.

Access

Access to the TMS Support Center is free. However, to make sure providing support remains manageable and fast, posting questions is only allowed for customers with an active license for a specific product.

By letting all active registered users take part, anyone using the same product is encouraged to join the discussion and provide their own insights, experiences, or even solutions.

Search

Making search quick and easy is important. This enables you to find out if a particular question has been answered before and get a previously suggested solution right away without needing to wait for an answer.

All data from the TMS Forum has been migrated to the new TMS Support Center.
As such the TMS Support Center also acts as a giant searchable archive from day 1.

Uploads

Sometimes words alone just aren’t enough. Add images and files to your question with ease.

Mobile friendly

Want to access the TMS Support Center while away from your desktop? No worries, the site is fully compatible with mobile browsers.

Conclusion

The TMS Support Center will allow us to keep providing you with the best possible support more efficiently than ever. Now and in the future!

Read More

Read More

Wrapper pack for Vaadin UI Components

A while ago we created an import tool to minimize the workload of importing web components into TMS WEB Core. We wanted to extend the capabilities of this import tool and adjust it as much as possible so it can handle a wider range of web component sets. If you take a look around the countless available libraries, you’ll notice that many of the web components share the same functionality, so we wanted to pick something that stands out.

Our next target was the Vaadin UI Components. It is developed by Vaadin and the component pack is available through HTML and Java. It has free and open-source elements and apart from the different look and feel it also introduces some new components, such as Login and its overlay variant.

Another advantage is that many of the elements behave differently on smaller screens, making them a great candidate for mobile development. Below you can see the difference between the Date Picker and Tabs components on a bigger desktop and smaller mobile browser.

The online documentation is available for each component here under the “Free & open source components” section.

You can go ahead explore a selection of these components in our demo, and make sure to check it out on mobile devices too! We made this wrapper pack available for free as part of our new TMS WEB Core partner program, and you can download it from here.

To install, open, compile & install the package from the “Component Library Source” folder. This will install the design-time components.
For use at runtime, make sure that the “Core Source” folder is in your TMS WEB Core specific library path that you can set via IDE Tools, Options, TMS Web, Library path.

Read More

Read More

TMS WEB Core partner program launched

We’re thrilled to launch from today the TMS WEB Core partner program. The TMS WEB Core partner program is created to let everyone participate, benefit from additional TMS WEB Core components and to offer exposure to individual developers and companies to make other TMS WEB Core developers aware of the extra tools and components created for TMS WEB Core.

Explore

Visit the TMS WEB Core partner program page where we have for this launch already 5 offerings:

  • 40+ Smart HTML elements wrapper components
  • Screen capture component
  • Froala Editor wrapper component
  • Vaadin mobile friendly UI control wrapper components
  • Components for real-time video communication with Jitsi and OpenTok WebRTC services

Why a partner program?

The world of web development is vast and rapidly evolving. There is literally an abundance of interesting code available for web application development. From various exciting UI components to JavaScript libraries offering complex functionality such as AI libraries and so much more. As Delphi RAD developers we have come to expect that taking advantage of such functionality should only be a component away. And that is exactly the reason and purpose why we have created the TMS WEB Core partner program. It allows you to contribute to the TMS WEB Core ecosystem, be it with open-source component wrappers for web functionality, commercial components or any other tools that helps TMS WEB Core developer being more productive. Of course, our team also plans to regularly contribute components that will be open-source and expose specific functionality for use in TMS WEB Core web applications that we do not consider part of core framework functionality. To launch the program we already bundle several open-source components we developed for TMS WEB Core with today also an extra library of vaadin web component wrappers added especially for this launch. Extra advantage: when paying a little bit attention to how a component is designed, the same code will be usable not only from TMS WEB Core for Delphi but also from TMS WEB Core for Lazarus or soon TMS WEB Core for Visual Studio Code.

Getting started

Get ready and learn all about custom component development for TMS WEB Core. A great starting resource to explore how to do this are these interesting blog articles: https://www.tmssoftware.com/site/blog.asp?post=449 and also https://www.tmssoftware.com/site/blog.asp?post=491

When you created your first components, follow the 3 steps to be included in the TMS WEB Core partner program:

Benefits

Expose your work and knowledge about Delphi and TMS WEB Core component development to others via the TMS WEB Core partner program. If you decide to make your work commercially available, we’ll be happy to publish it on the partner page as well. Recognized contributors to the TMS WEB Core partner program get a free TMS WEB Core license.

Start developing today

Download the latest TMS WEB Core for Delphi and Lazarus v1.4.2 release and get started. The trial version is not time-limited, so you can take your time to explore the wonderful world of web development. Get in touch with the team in case you look for technical help and advice. We are eager to see what fantastic web functionality you will integrate in TMS WEB Core!

Read More

Read More

Delphi Exception handling code review reminders

I bumped into [WayBack]When an exception is nil in the exception handler – twm’s blog for some legacy code a while ago. Some code review reminders: raise Exception( is always wrong: no exception instance is created Exception.Create( without a raise is wrong most of the times except end is almost always wrong except and finally in encompassing blocks often is a code smell I need to check which ones are caught by [WayBack] Code Analysis Tool | FixInsight for Delphi (which is not at [WayBack] TMS Software | VCL, FMX, ASP.NET, .NET controls & components for Delphi, C++Builder & Visual Studio | TMS FixInsight Pro.) –jeroen
Read More

FNC Styles are here!

Intro

After the first announcement a week ago, and a lot more tweaks and improvements we are proud to announce the first release of FNC Styles! FNC Styles is currently available for the TMS FNC UI Pack (v3.1) only. The core styling mechanism is implemented in TMS FNC Core (v2.3) and will be further pushed through other FNC components such as the TMS FNC Dashboard Pack in the future. FNC Styles targets 6 styles.

  • Default
  • Dark
  • Light
  • Office 2019 White
  • Office 2019 Black
  • Office 2019 Gray

Getting Started

Designtime

To start styling the FNC components, drop a TMS FNC UI Pack component on the form, right-click the
component and select the Style->Manager option from the context-menu.

This will prompt you with a dialog that initially shows the built-in styles. Built-in styles are stored in
the TMSFNCStylesResources.res file, separately available.

Click on a style to select it and click on the “Apply” button to apply the style to each component on
the form. You can also load your own style file by clicking on the “Open” button. The built-in styles
are combined style files containing styles from multiple components. The corresponding style files for the built-in styles are included in the Styles subfolder in TMS FNC Core. When right-clicking on the component, you can save your own style to a style file. This separate component style can be loaded and
managed via the style manager. Please note that individual component styles for the built-in styles are not available separately.

Runtime

To start with runtime loading, add {$R ‘TMSFNCStylesResources.res’} to your application first, so
built-in styles are available.
To load a style at runtime there are several options. When you have a style file, you can either load
it via [Component].LoadSettingsFromFile, or via the TTMSFNCStylesManager. The
TTMSFNCStylesManager instance also allows you to load files from a resource (via the StyleResource
property), from a file (LoadStyleFromFile), a stream (LoadStyleFromStream), or plain text
(LoadStyleFromText). The format for loading the resource through LoadFromResource or the
StyleResource property can be found in the manager.
The built-in style has the format TTMSFNCStyle_[StyleName].style, with [StyleName] being the
actual style name of the file and can be loaded by using the code below:

implementation

{$R 'TMSFNCStylesResources.res'}
TMSFNCStylesManager1.LoadStyleFromResource(‘TTMSFNCStyle_FNC_Dark’);

Or

TMSFNCStylesManager.StyleResource := ‘FNC_Dark’;

JSON Formatting

The style mechanism is based on the persistence interfaces that already exist in FNC. It will
generate JSON that only contains the necessary information based on the components
appearance properties. The detection happens automatically, but finetuning can be done with
the IsAppearanceProperty virtual. Some components need to save more information than
others. Even custom components that you have designed will be styleable through the
ITMSFNCPersistence interface, when inheriting from TTMSFNCCustomControl.

{
"$type":"TTMSFNCCalendar",
"Color":"#484848",
"DateAppearance":{
"$type":"TTMSFNCCalendarDateAppearance",
"BadgeFill":{
"$type":"TTMSFNCGraphicsFill",
"Color":"#FF0000",
"ColorMirror":"gcNull",
"ColorMirrorTo":"gcNull",
"ColorTo":"#808080",
"Kind":1,
"OnChanged":null,
"Opacity":1,
"Orientation":1,
"Texture":"",
"TextureMode":2
},
"BadgeFont":{
"$type":"TTMSFNCGraphicsFont",
"Color":"#FFFFFF",
"Family":"Segoe UI",
"Name":"Segoe UI",
"OnChanged":null,
"Size":10,
"IsFMX":true,
"Style":0
},
"BadgeStroke":{
"$type":"TTMSFNCGraphicsStroke",
"Color":"#FF0000",
"Kind":1,
"OnChanged":null,
"Opacity":1,
"Width":1
},
"DateAfterFill":{
"$type":"TTMSFNCGraphicsFill",
"Color":"#484848",
...

WEB Support

In WEB, styles are also supported. At designtime, the same methods can be used as you would apply in
VCL or FMX. At runtime, there is no LoadStyleFromResource available as TMS WEB Core does not
support resources, but there is a LoadStyleFromURL available in the TTMSFNCStylesManager that
allows you to load the styles from an URL. You can copy the style files that are necessary for your
application from the Styles sub folder in the source folder, available after installation.
Alternatively, you can also use the WebFilePicker component to select a file and load it as a style.
Below is a sample that demonstrates both techniques.

procedure TForm1.WebButton1Click(Sender: TObject);
begin
WebFilePicker1.Files[0].GetFileAsText;
end;
procedure TForm1.WebButton2Click(Sender: TObject);
begin
TMSFNCStylesManager1.LoadStyleFromURL('http://localhost:8888/Project1/TTMSFNCStyle_FNC_Dar
k.style');
end;
procedure TForm1.WebFilePicker1GetFileAsText(Sender: TObject;
AFileIndex: Integer; AText: string);
begin
TMSFNCStylesManager1.LoadStyleFromText(AText);
end;

Create your own style!

When inheriting from TTMSFNCCustomControl, the SaveSettingsToFile (coming from the ITMSFNCPersistence interface) is available to allow you to save the appearance properties to a style file. The base implementation is automatically detecting appearance properties, but additional properties can be added by overriding the IsAppearanceProperty function when you are applying FNC Styles to your own component. Through the TTMSFNCStylesManager, styles can be combined to a single style file that can then be loaded again. Create your own style and don’t be afraid to share. It might end up as a built-in style in the future!

Read More

Read More

tmssoftware.com and FaunaDB announce partnership to work on cloud database backed applications

We are excited to announce that tmssoftware.com & FaunaDB entered a partnership and as a first result, TMS WEB Core v1.4 features out-of-box support for FaunaDB.

TMS WEB Core focuses on high productivity RAD component-based web client application development for Object Pascal developers and FaunaDB focuses on effortless serverless data access. Together, this offers a powerful combination for creating fast, secure web applications backed by the data correctness, capacity, redundancy, latency, and availability of FaunaDB.

Now, creating a web application dealing with user data is nothing more than creating an account at FaunaDB, creating a new database with data collections you want, define your queries and get an API key.

In the TMS WEB Core web client application, drop a TWebFaunaDBClientDataSet on the form, specify the CollectionName (table name), ClientKey (API-key) & persisted DB fields. Activate this dataset and all DB-aware UI controls connected via a TWebDataSource to this TWebFaunaDBClientDataSet will work directly on the FaunaDB data.

TMS WEB Core in Embarcadero RAD Studio, using the TWebFaunaDBClientDataSet dataset for a seamless connection to data on FaunaDB

The TWebFaunaDBClientDataSet has been designed to also work seamlessly in multi-user/multi-account scenarios. Therefore, at TWebFaunaDBClientDataSet level, a UserCollectionName can be set and a user login and signup function is integrated at dataset level.

It is clear that the combination of web front-end development with TMS WEB Core with data in the backend managed by the serverless FaunaDB service offers an unparalleled combination to develop and deliver secure, reliable, high performant web-based applications fast.

Our chief evangelist Dr. Holger Flick explains all in detail in a special video about this:

You can now explore this first result of our partnership by downloading TMS WEB Core v1.4 from https://www.tmssoftware.com/site/tmswebcore.asp and create a FaunaDB account at https://www.fauna.com.

Bruno Fierens

CEO

tmssoftware.com
sales@tmssoftware.com
Joe Volat
PR
FaunaDB
press@fauna.com
Twitter: @fauna
Community: https://community.fauna.com

Read More

Read More

Coming up: style your components with FNC styles!

Look and Feel

A major part of your application is the look and feel. It can take up a lot of resources and time to make your application stand out, make it attractive, a feast for the eyes. When eating dinner, you also want your plate to look nice, because it makes it more appealing, and yells: “Eat me!”. Of course, your application needs to function properly, but don’t we all want to have a nice looking user interface?

Coming around the corner are FNC styles, that will help you achieve a slick user interface!

FNC Styles

FNC Styles is designed to provide you with 2 ways to style your application.

  • Built-in styles
  • Custom styles

In the first version of FNC Styles the built-in styles will be: Dark, Light, Office 2019 Black, Office 2019 Gray and Office 2019 White.

Custom styles will be configurable through the style manager, based on the default or built-in styles.

The style manager (also available as a separate component), will provide you with an easy way to load styles at designtime & runtime, and the possibility to combine multiple individual component styles to one style, that you can apply to all your forms. At designtime and runtime, the built-in styles are available through a resource.

JSON based

The style mechanism is based on the persistence interfaces that already exist in FNC. It will generate a JSON that only contains the necessary information based on the components appearance properties. The detection happens automatically, but finetuning can be done with the IsAppearanceProperty virtual. Some components needs to save more information than others. Even custom components that you have designed will be styleable through the ITMSFNCPersistence interface, when inheriting from TTMSFNCCustomControl.

{
   "$type":"TTMSFNCCalendar",
   "Color":"#484848",
   "DateAppearance":{
      "$type":"TTMSFNCCalendarDateAppearance",
      "BadgeFill":{
         "$type":"TTMSFNCGraphicsFill",
         "Color":"#FF0000",
         "ColorMirror":"gcNull",
         "ColorMirrorTo":"gcNull",
         "ColorTo":"#808080",
         "Kind":1,
         "OnChanged":null,
         "Opacity":1,
         "Orientation":1,
         "Texture":"",
         "TextureMode":2
      },
      "BadgeFont":{
         "$type":"TTMSFNCGraphicsFont",
         "Color":"#FFFFFF",
         "Family":"Segoe UI",
         "Name":"Segoe UI",
         "OnChanged":null,
         "Size":10,
         "IsFMX":true,
         "Style":0
      },
      "BadgeStroke":{
         "$type":"TTMSFNCGraphicsStroke",
         "Color":"#FF0000",
         "Kind":1,
         "OnChanged":null,
         "Opacity":1,
         "Width":1
      },
      "DateAfterFill":{
         "$type":"TTMSFNCGraphicsFill",
         "Color":"#484848",
...

Create your own style!

When the new FNC style mechanism is released, it will allow you to use the built-in styles or create and apply a custom style to your application. Feel free to share the style you have created, we can even include it as a built-in style. Stay tuned, FNC Styles is around the corner and will be available real soon!

Read More

Read More

FireMonkey 3D Enterprise Application

You might remember me writing that the FireMonkey framework isn't a full-blown gaming engine and that it's better suited to enterprise applications. (rimshot)This is a follow up to my May the Fourth and Revenge of the Fifth posts. These 3D models are also from mods of Sins of the Solar Empire by a group named Stellar Parallax Studios who created Star Trek Armada 3 (STA3) and Ages of the
Read More