Back to Overview
Coming soonProFree during beta

The Form Designer, VallentaDesigner

A .dfm form opened from VS Code appears in VallentaDesigner: a designer window with a component palette built from the packages installed in Delphi, an object inspector backed by the IDE's own property editors, and event handlers that Vallenta Studio creates, renames and removes in the unit. A saved form is written in the text format the IDE produces.

VallentaDesigner - start
The VallentaDesigner splash screen: the Vallenta Designer logo in DFM mode, a progress line reading Loading 128 libraries, and a .dfm listing of a form with a panel, a label, a button and an edit control.

The start screen while the designer loads the component packages of the selected Delphi installation.

Delphi 11, 12, 13MIT sourceFree during the beta
Overview

Real components, outside the IDE

VallentaDesigner is a separate Windows application, published as source under the MIT license and built with each Delphi version in use. It runs against the runtime packages of that Delphi installation and loads the design packages the IDE has installed, so the form on the design surface consists of real component instances: the stock VCL and every third-party package registered in the IDE, with the icons and property editors their packages ship.

Vallenta Studio launches the designer when a .dfm is opened, forwards the project's search path so ancestor forms and frames resolve, and performs every source edit the designer requests: a component placed on the form gains its field in the unit, a deleted one loses it, a renamed one renames its field and its handlers, and a double-click on an event creates the handler and reveals it in the editor. The designer reads and writes the .dfm only; the unit is edited by the extension through the language server.

Components from a package that is not installed are kept as placeholders and written back untouched, as is any property the designer cannot read.

Setup

Three steps, once per Delphi version

1

Build the designer

The source is published under the MIT license. Opening VallentaDesigner.dproj in Delphi and building it produces VallentaDesigner.exe; one build per Delphi version in use, from the same source tree. It is a runtime-packages build, which is what lets it load the component packages the IDE has installed.

2

Enter the path per Delphi version

The Form Designer card on the settings page holds one row per installed Delphi version. The path of the executable built with that version is entered in its row; the row of the selected version is marked active.

3

Switch it on

With Open .dfm files in the Vallenta Form Designer enabled, a form opened from the file explorer, from the DFM badge in the project explorer or with F12 from its unit opens in the designer, and no editor tab is left behind. Alt+F12 opens the form as text.

Open the source on GitHubThe designer's own repository is published shortly; until then the link opens the Vallenta Studio repository, where the release is announced.
Vallenta Studio - Settings, Form Designer card
The Form Designer card on the Vallenta Studio settings page: the switch Open .dfm files in the Vallenta Form Designer, the note Free during the beta, a button Open Vallenta Studio on GitHub, and one row per installed Delphi version with the path to VallentaDesigner.exe; the Delphi 13 row is marked active and found.

The switch that takes over the .dfm file type, the source link, and one executable path per installed Delphi version.

Key Features

The designer window, part by part

A palette built from the installed packages

The palette lists what the design packages of the selected Delphi installation register, grouped by category and with the icons the packages ship: stock VCL and third-party components alike. A search field filters by name; a Favourites tab keeps the components used most. A component is placed by click, by dragging a rectangle, or by double-click at its constructor size, and is named the way the IDE names it.

An object inspector backed by the IDE's editors

The component tree mirrors the form's parent hierarchy and shares its selection with the surface. Property rows come from the property editors the loaded packages register, so a third-party component is presented with the rows its author defined. Colours, fonts, sets and sub-objects edit inline; TStrings, TPicture and collections open their own dialogs; a double-click runs a component editor's default action, and a right-click lists its verbs. With several components selected, the inspector shows their shared properties and writes an edit into every one of them.

The unit follows the form

Every source edit is performed by Vallenta Studio through the language server: a component added on the form gains its field in the unit, a deleted one loses it, renaming a component renames its field and its event handlers, and a double-click on an event creates the handler and reveals it in the editor. Saving the form saves the unit with it. A unit in ANSI encoding is converted to UTF-8 with BOM before a non-ASCII component name is written.

Editing on the surface

Click, Shift+click and marquee selection. Move and resize snap to the 8 x 8 grid, or follow the mouse exactly with Alt held; arrow keys nudge by a grid step, Ctrl+Arrow by one pixel. Align, Size, Tab Order and Creation Order act on the selection. Copy, cut and paste move component fragments through the system clipboard, within a form or between forms. Undo and redo keep 100 steps, one per gesture.

Files preserved as written

A form loaded and saved without changes is written back unchanged, event handler names included. A component whose package is not installed is kept as a placeholder and written back untouched, as is any property the designer cannot read. Frames used inside a form and forms built on other forms (inherited) open with their ancestors resolved from the project's search path; what is saved is again only the differences.

One resident process, several forms

One designer process serves every form of a Delphi version: the second form opened reuses the loaded packages, so only the first waits for the package load. Each form has its own window; a notification-area icon lists the open documents and is the only place the process is ended. Every unsaved document is journalled every 30 seconds as a complete form file and offered back after a session that ended without a save prompt.

In Practice

Opened from VS Code, as recorded

Vallenta Studio - VallentaDesigner opened from VS Code

A short demo of VallentaDesigner in action, opened from VS Code.

Also included
F12 toggles form and source - from a unit, F12 opens its form in the designer; from a form, back to the unit. Alt+F12 opens the .dfm as text.
DFM badge and CodeLens - the project explorer marks every unit that has a form; a CodeLens in the unit opens the form.
Palette favourites and search - a Favourites tab holds the components marked with a star; a search field filters the palette by name.
Search path forwarded - every directory the owning project reads units from is sent with each open, so frames and ancestor forms in other directories resolve.
Data modules and frames - a data module opens on an icon canvas holding its non-visual components; a standalone frame opens like a form.
Delphi 11, 12 and 13 - one source tree builds with each; the executable of the selected Delphi version is used.
Messages pane - load log, save results and rejected values, per document.
Companion unit saved with the form - a designer save writes the unit buffers that carry designer edits; a form open as text with unsaved changes is reported before the designer opens it.
Recovery - unsaved documents are journalled every 30 seconds and offered back one file at a time at the next start.
How it works

One writer per file kind

VS Code and the designer communicate over a named pipe. The extension starts the designer with the form, its search path and the Delphi environment, attaches to the running core afterwards, and raises the document window. Requests are sent in both directions: the extension sends the designer an open request for a form; the designer sends the extension a request for every change to the unit, and the extension performs it through the language server that already indexes the project. The designer writes the .dfm, the extension writes the .pas.

Vallenta Studio extension
Opens forms, edits the unit through the language server, writes the .pas
VallentaDesigner core
Packages, design-time layer, recovery journal; one per Delphi version
Document windows
One per form, frame or data module
Component packages
Loaded from the Delphi installation
The .dfm file
Written by the designer only

In the beta

  • VCL forms, frames and data modules; forms built on other forms.
  • Third-party packages with their icons, property editors and component editors.
  • Fields, event handlers and renames written to the unit by Vallenta Studio.
  • Clipboard, undo and redo, multi-selection with align and size commands.
  • Recovery of unsaved documents.

Coming later

  • FMX forms; an .fmx file opens as text.
  • The designer inside a VS Code tab instead of its own window.
  • A Check for updates button that compares the build with the latest release.

Forms designed from VS Code, with Vallenta Studio

Free during the beta, no Pro subscription required. After the beta the designer is part of the Pro plan; every Pro feature is available free for 5 days after registration.