twinBASIC Update: February 18, 2025

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 Monday week, 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, please leave a comment below.

Here are some links to get involved with the project:


Highlights

New IDE Option: Single Row of Code Tabs

BETA 683 introduced a new IDE Option (Tools > IDE Options...):

  • IDE: Single line of code panel tabs

This feature controls how the IDE handles open code pane tabs when there are too many to fit at once above the code window. You have two options:

  1. Auto-stack the code panel tabs in multiple rows (default)
  2. Extend the code panel tabs horizontally in a single row and use arrows to slide hidden tabs into view

Here are the two options:

Auto-Stacked Tabs

Single Line of Tabs

This feature was originally requested in GitHub:

In IDE, add option to make tabbed windows linear rather than stacked · Issue #1991 · twinbasic/twinbasic
It would be very nice if the layout of the tabs could be changed from stacked as they are now to linear... Image of VB6 IDE with CodeHelp IDE extender installed which provides such tabs in a nice l…

Discord Chat Summary

* Auto-generated via Claude-3.5-Sonnet-200k on poe.com

Overview

This week's discussions centered around COM interfaces, registry dependencies, and IDE improvements. Notable technical exchanges covered interface inheritance in COM libraries, function pointer implementations, and dependency troubleshooting. Community engagement was active with several detailed technical discussions and bug reports.

Interface Implementation & COM

  • Wayne Phillips clarified that twinBASIC's disassembly shows two versions of COM interfaces - a flattened dispinterface version and a vtable version with proper inheritance
  • Detailed discussion of the _Textbox interface implementation revealed how tB handles both dispinterface and vtable interfaces separately
  • Community members explored function pointer implementation using Delegates for IOCP server development

IDE Improvements & Bug Fixes

  • Wayne Phillips released BETA 683 with fixes for MDIChild form property issues and introduced single line tabs option
  • Community feedback highlighted opportunities for improvement in the IDE's smart guides and property editor interface
  • Several members discussed ways to enhance code navigation and selection features in the editor

Dependency Management & Deployment

  • Significant discussion around troubleshooting COM component registration and system dependencies
  • Community members shared expertise on using tools like Dependency Walker and registry inspection for deployment issues
  • Detailed exploration of MDAC and modern alternatives for database connectivity

Bug Fixes & Known Issues

  • Fixed an issue where MDIChild form properties weren't persisting after name changes in BETA 683
  • Identified a long-standing IDE display issue with certain numeric calculations
  • Comment color rendering bugs were noted as a low-priority issue

Conclusion

The week showed significant progress in both core language features and IDE improvements. The community's focus on deployment and dependency management highlights the growing adoption of twinBASIC in production environments. The rapid response to bug reports and implementation of new features demonstrates the project's strong development momentum.

Around the Web

Advanced Ribbon Demo from fafalone

From the GitHub project readme:

The Windows UI Ribbon Framework Demo - Advanced is the long awaited final part of my series on using the UI Ribbon in twinBASIC. With the terrible decline in UI in Windows 11, the ribbon is looking pretty great compared to how it is now.

If you're not already familiar with the basics, you'll want to see the Introduction demo, Intermediate Demo, and Galleries Intro demos, which are all in the following repo: https://github.com/fafalone/UIRibbonDemos

This Advanced demo combines the Intermediate and Galleries demo, and builds on those to cover almost all of the remaining features of the ribbon, and a number of bonus features related to the operation of the RichEdit control so that almost all of the related buttons work.

GettbZip: A Simple tB Installer/Updater

From the GitHub project page:

Simple twinBasic "installer"

This is a SUPER simple project to find the newest released twinBasic zip file from it's GitHub Releases page, download it and, if selected, "install it". Which deletes the current folder and extracts the zip recreating the local folder twinBasic resides in.

It allows for simply opening the zip or open the folder the zip was downloaded to.

You may select to launch twinBASIC after it is 'installed" as well.
GitHub - jdelano0310/GettbZip: Simple twinBasic “installer”
Simple twinBasic “installer”. Contribute to jdelano0310/GettbZip development by creating an account on GitHub.

For additional information and informal "release notes", check out the related VBForums post.

twinBasic “installer”-VBForums
I did this for myself (because clicking links is hard :lol:) and thought I’d share it. It is very simplistic, select where to download the zip file, select where twinBasic is locally, select what to do with the zip file once downloaded, click download. It finds the latest available and does what is asked. Do with it as you will. https://github.com/jdelano0310/GettbZip Thank you wqweto for cZipArchive.cls **no error trapping currently as using On Error Goto causes the project to no

NOTE: As with other tB updaters I've mentioned here, I have not personally tested this software.

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.

AI-Generated Changelog Summary

* Auto-generated via Claude-3.5-Sonnet, sorted in order of its opinion of "most impactful changes."

Here's a concise summary of the notable updates in twinBASIC Beta:

  • IDE Improvements

    • Added new option for single-line code panel tabs with improved tab visibility handling
    • Fixed form designer stability issues, including better handling of control placement and property changes
  • VB6/VBA Compatibility Enhancements

    • Improved type suffix handling when Option Explicit is OFF, fixing variable declaration behavior to match VB6
    • Fixed form events reliability (Form_Resize, Form_Load, Form_Unload) and subclassing behavior
  • Runtime Performance

    • Enhanced menu handling to reduce screen flashing during dynamic updates
    • Fixed memory management issues related to dynamic menu population
    • Improved AutoRedraw functionality for better graphics performance
  • Bug Fixes

    • Resolved issues with global variable state management after debug sessions
    • Fixed windowless controls rendering in the form designer
    • Corrected UserControl initialization and dimension handling

WARNING: The following issues are present in BETA builds 623 - 685 (the latest build as of publication):

  • IMPORTANT: This is an interim/experimental release. It includes significant changes, so some instability is to be expected. [Editor's Note: Rolling back to BETA 622 may be necessary until the BETA 623+ version stabilizes or if any of the KNOWN ISSUES below affect your project.]
  • KNOWN ISSUE: UserControls from the ACTIVE project will not appear correctly in the form designer in this release (they are purposely disabled until next release). Packaged controls, such as VBCCR will work.
  • KNOWN ISSUE: Menus currently not appearing in MDI Forms (broken in this build)
  • KNOWN ISSUE: 'Scale*' properties are often not settable in the IDE property sheet (broken in this build)
  • KNOWN ISSUE: Setting Width/Height via the property sheet often does not work correctly (broken in this build)
  • KNOWN ISSUE: Controls are not being destroyed properly by the form designer, causing big memory leaks (broken in this build)
  • there are known memory leaks in these versions, so memory usage will be higher than at the Version 1.0 release

BETA 680

  • fixed: Form_Resize event wouldn't fire after a call to Show() if Width/Height had previously been set prior to the call [ XYplorer, discord ]
  • fixed: after an F5/Start debug session ends, global variables would not be reset [ XYplorer, discord ]
  • fixed: some edge cases around Form_Load and Form_Unload, involving subclassing [ XYplorer, discord ]
  • fixed (regression in BETA 679) adding/deleting an item via the PROJECT EXPLORER could lead to an internal IDE error

BETA 681

  • fixed: (regression) some tbShell demos (e.g. tbShellBrowse) not working properly, due to an accidental change in UC Initialize event handling, and UC Width/Height property bugs [ fafalone, discord ]
  • fixed: Cls() bug causing issues when AutoRedraw is TRUE [ XYplorer, private ]
  • fixed: excessive menu bar flashing due to redrawing immediately for each change [ XYplorer, private ]
  • fixed: 'memory locked' runtime error when populating menus dynamically [ XYplorer, private ]

BETA 682

  • improved: now enforcing stricter constant expression evaluation rules to prevent compiler hard crash in some instances when evaluating invalid code (e.g. when evaluating array bounds) [ jovick, discord ]
  • fixed: file number prefix (#) was not supported in InputB() [ jovick, discord ]

BETA 683

  • fixed: changing the form Name property in the form designer no longer breaks the form designer [ forliny, discord ]
  • added: IDE option 'Single line of code panel tabs'

BETA 684

  • fixed: (regression in BETA 683) placing windowless controls in the form designer would not render immediately [ sokinkeso, discord ]
  • fixed: (regression) cannot move Line controls in the form designer unless using the control drag points [ sokinkeso, discord ]

BETA 685