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:
- Custom twinBASIC IDE Installation Guide (NOTE: the twinBASIC VSCode extension is under a feature freeze until 2023)
- GitHub Issue Tracker (report bugs)
- twinBASIC Discord Server (chat about the project)
- twinBASIC/VBx LinkedIn Group
Highlights
New Project / .VBP Import Options Dialog
BETA 278 introduced a dialog for changing the most significant project options from their defaults.
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
Changelog
Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.
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 ]