twinBASIC Update: March 26, 2023

Highlights include a New Project settings dialog and a screenshot of a sample twinBASIC project showing its existing capabilities.

twinBASIC Update: March 26, 2023

On April 23, 2021, I helped Wayne Phillips introduce the world to twinBASIC at the Access DevCon Vienna conference.  I boldly predicted that twinBASIC (along with the Monaco editor) would replace VBA and its outdated development environment by 2025.  With that goal in mind, this weekly update is my attempt to keep the project fresh in the minds of the VBA development community.

Every Sunday, I will be providing updates on the status of the project, linking to new articles discussing twinBASIC, and generally trying to increase engagement with the project.  If you come across items that should be included here, tweet me @NoLongerSet or email me at mike at nolongerset dot com.

Here are some links to get involved with the project:


Highlights

New Project / .VBP Import Options Dialog

BETA 278 introduced a dialog for changing the most significant project options from their defaults.

twinBASIC's New Project Options dialog box

You can hover over any of the options to see a detailed description of what they do.  I've reproduced the contents of the tool tips below:  

Option Explicit ON

When this project option is ON, the compiler will always enter 'Option Explicit mode when compiling code, regardless of whether you have specified 'Option Explicit' at the top of each module or class.

It is highly recommended to leave this project setting ON.

Visual Styles

With this setting on, a manifest file will be embedded into your generated executables that causes Windows to theme the standard controls.

It is highly recommended to leave this option ON.

Include Common Controls

With this option ON, the WinNativeCommonCtls package will be referenced by your project. This allows you to use controls such as TreeView, UpDown, MonthView and DTPicker.

DPI Awareness

With this option set to NONE, on high-DPI screens your application will be scaled by the operating system unless you manage the embedded manifest file yourself.

With this option set to SYSTEM_DPI_AWARE or PER_MONITOR_DPI_AWARE, your application will be considered DPI-aware and NOT scaled by the operating system.

NOTE: with DPI-awareness ON, if you write code that uses Win32 API graphics calls directly, you must account for high-DPI systems in your positional calculations.

Around the Web

fafalone's Explorer Browser Wrapper Control

I assume this is related to fafalone's ExplorerHost project that I mentioned in last week's twinBASIC Update.

Think of this as another proof-of-concept and demonstration of the burgeoning capabilities of twinBASIC.  Here's fafalone's note from Discord:

Explorer Browser wrapper control is coming along good. Got a lot of advanced features not in the simple demo
Screenshot of fafalone's Explorer Browser wrapper control

Changelog

Here are the updates from the past week.  You can also find this information by visiting the GitHub twinBASIC Releases page.

Releases · WaynePhillipsEA/twinbasic
Contribute to WaynePhillipsEA/twinbasic development by creating an account on GitHub.

WARNING: The following issue is present in BETA builds 202 - 281 (the latest build as of publication):

  • there are known memory leaks in these versions, so memory usage will be higher than normal

BETA 278

  • improved: WebView2 control toolbox icon, big thanks to sokinkeso
  • improved: opening new projects (and importing from VBPs) now shows a dialog for changing the most significant default project options
  • improved: added a warning notice when opening a DLL project that registers to HKLM when not running the IDE elevated

BETA 279

  • fixed: (regression in BETA 278) saving a new project would often fail silently [ adakordev, discord ]

BETA 280

  • fixed: settings from the new project dialog were not always persisted when saving

BETA 281

  • fixed: (regression since BETA 276) renaming/moving files inside the IDE was failing [ fafalone, discord ]
  • fixed: new project modal dialog settings were effective but the Settings file was not matching [ fafalone, discord ]

All original code samples by Mike Wolfe are licensed under CC BY 4.0