SVG “non-scaling-stroke” attribute support

Sometimes it’s preferable to have the lines of an object keep their original width, regardless of the applied transformation. For example, you draw a line on a map showing a user’s position and a destination. When the user zooms in on the map, you want to enlarge the map but have the line maintain its width.


Code Editor: Say hello to Comment blocks

Adding a block of comments at the beginning of a method is useful for adding a note about what a method does, as well as a list of input/output parameters. And having a few lines of human-readable text within a complicated section of code can be convenient to help you and others recall the purpose of this particular section of code. Beginning with 4D v18, your programming experience is enhanced with the addition of comment blocks!


4D Write Pro documents: a useful new parameter

4D Write Pro has been designed to create all kinds of documents, from the most simple to the most sophisticated. To achieve this diversity, documents can hold distinct parts, like paragraphs, sections, headers, footers, etc. Once filled in, 4D Write Pro behaves in such a way that all of these parts can be read. However, sometimes some parts must be resized according to their content. This is typically the case for headers and footers whose height can change automatically. This functionality is generally very useful, but sometimes it’d be more practical to set the heights of headers and footers to constant values (even if their content may be truncated and no longer be fully visible).


Project database: Deploying your application

So your application has been developed and you’re ready for the next step. 4D lets you:

  • generate a compiled database that no longer contains any interpreted code,
  • generate a standalone application that can be double-clicked, (i.e., merged with 4D Volume Desktop, 4D’s database engine),
  • generate client/server applications with automatic updates of client and server parts.


With a project database, you can also build your final applications for both platforms. A project database uses the same configuration file as a binary database.


On resize… On resize… On resize…

Wondering how to create a nice and dynamic user interface? Typically when a form is resized, the form objects whose horizontal sizing or vertical sizing properties are set to move or grow, are automatically resized. In some cases  (e.g., finer user interface management), developers choose to manage form object size and position by programming. To do so, they check the “on resized” event which is triggered within the form method. But what happens when the form contains one or more subforms? On many levels? This blog post gives you the answers!