twinBASIC Update: January 7, 2025

Highlights include an experimental tab control, a New Year's sale on perpetual tB licenses, and a tB package with a Timer object and an INI config file reader object.

twinBASIC Update: January 7, 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

Experimental Tab Control

As announced by Wayne in Discord:

In the package manager you will now find the experimental tB package version of EduardoVB's NewTab (SSTab replacement):
Needs BETA 634. It's a straight port, with only updates to support 64-bit.

Wayne uploaded a short video demo of the new control in action in Discord:

Not being a VB6 expert myself, I was glad to see Ben Clothier ask the question I was wondering myself:

bclothier: is SSTab itself backward compatible with VB6's original?

WaynePhillipsEA: SSTab is the one that came bundled with VB6, part of the sheridan controls

More from Wayne:

Having played with NewTab a bit, I don't see any major reason why we can't use it as the default tab control for tB. We might need to look a little more closely with regards to making sure we have full back-compatibility with SSTab, but I suspect @EduardoVB already has that covered.

And EduardoVB chimed in to confirm that NewTab is backward-compatible with the tab control that shipped with VB6:

NewTab is intended to be fully backward compatible with the SSTab control, the one that came with VB6. I think it is already quite tested, but if there is any difference it would be a bug.

Discord Chat Summary

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

Here's the structured summary of the twinBASIC Discord chat from December 29, 2024 to January 7, 2025:

Overview

The week was marked by significant progress in control compatibility and feature improvements, particularly with the integration of EduardoVB's NewTab control. Community engagement remained high with discussions spanning technical implementations, bug fixes, and development support. The period also included the announcement of a New Year promotion for twinBASIC Professional licenses.

Control Development & Integration

  • Wayne announced support for UserControl.ContainedControls in BETA 629, enabling compilation of the NewTab AX control (32-bit)
  • The NewTab control package is now available in the package manager with both 32-bit and 64-bit support
  • EduardoVB confirmed NewTab maintains full backward compatibility with VB6's SSTab control
  • Discussion of RichEdit control improvements for color emoji support through Office's enhanced RichEditD2D implementation

Bug Fixes & Improvements

  • BETA 630 resolved an issue with Form_Load event naming conventions
  • BETA 635 brought significant performance improvements to the IDE's DIAGNOSTICS panel
  • ESC key functionality was expanded for various IDE dialog windows
  • Fixed issues related to package update notifications on project load

IDE & Development Experience

  • Improved handling of predeclared form instances in ActiveX DLLs using PredeclaredId(False)
  • Discussion of array handling and variant type detection in complex scenarios
  • Enhanced support for named parameters with ParamArray implementations

Community Support & Business

  • Wayne announced a New Year promotion for perpetual v1 licenses of twinBASIC Professional
  • Significant discussion around migration strategies for VB6 projects to twinBASIC
  • Community members reported successful migration of large projects (80+ forms, ~150k lines) with minimal changes

Conclusion

The week demonstrated twinBASIC's growing maturity with significant improvements in control compatibility and IDE functionality. The successful integration of the NewTab control marks an important milestone in providing modern replacements for classic VB6 controls. The development team's quick response to bug reports and feature requests continues to strengthen the platform's stability and usability as it moves toward v1 release.

Around the Web

New Year's Perpetual tB License Offer

Exclusive NEW YEAR 2025 Offer: twinBASIC with Perpetual Licences!

Timer Object in TBMANLIB Package

As posted by woeoio2 in the Discord show-and-tell channel:

If you are developing a formless project and need to use the timer object, you can now use TBMANLIB.cTimer to implement this requirement

Read INI Files with TBMAN's Ini Object

Also from woeoio2 in show-and-tell:

Import TBMAN from the package manager, and then you can directly use the tbman.ini object to manipulate the ini file, we can use the LoadFrom function to load the ini file from disk to the object, and then we can do CURD, Finally, save the ini object to disk as an ini file. See the sample screenshot for details

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's latest release:

  • Form Designer Enhancements

    • Added initial support for UserControl.ContainedControls
    • Improved handling of control arrays and anchored controls positioning
    • Fixed various designer-related issues with TabIndex assignments and control properties
  • Runtime Behavior Improvements

    • Resolved form visibility issues when setting captions
    • Fixed control array event handling to prevent multiple event firing
    • Corrected Controls.Add() functionality in compiled executables
  • IDE Performance & Usability

    • Enhanced overall IDE editing performance through optimized diagnostics panel syncing
    • Improved VBP project importing with automatic architecture selection
    • Better error reporting for Return statements without GoSub
  • Designer Stability

    • Fixed critical memory corruption issues with control arrays
    • Restored proper display of contained controls within Frame controls
    • Resolved various form designer event handling regressions

These updates demonstrate continued progress in maintaining VB6/VBA compatibility while enhancing the development experience with modern features and stability improvements.


WARNING: The following issues are present in BETA builds 623 - 637 (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 629

  • added: initial implementation for UserControl.ContainedControls

BETA 630

  • fixed: (regression) Form designer issue with inserted root events on the Form/UserControl not being named correctly [ fan2006, discord ]

BETA 631

  • fixed: Control array LBound/UBound issues after adding/removing controls at runtime [ franic, discord ]
  • fixed: some font properties were not importing correctly from VBP imported projects [ kimpos, discord ]
  • fixed: switching Button/CheckBox/OptionButton Style property in the form designer would not be effective until close or resync the form designer [ sokinkeso, discord ]

BETA 632

  • fixed: resizing an ActiveX control at runtime would not necessarily be effective [ kimpos, private ]
  • fixed: (regression) Form designer copy/paste: TabIndex would not be set correctly on pasted controls [ sokinkeso, discord ]
  • fixed: (regression) setting Form.Caption property when form is not visible would cause it to become visible [ https://github.com/twinbasic/twinbasic/issues/1979 ]
  • fixed: control-array events on a form could fire multiple times if the form has been shown multiple times [ https://github.com/twinbasic/twinbasic/issues/1981 ]

BETA 633

  • fixed: re-showing a form that makes use of anchored controls could cause the anchored controls to be at the wrong position [ sokinkeso, discord ]
  • fixed: pasting multiple controls into the form designer could cause incorrect TabIndex to be assigned to the new controls [ sokinkeso, discord ]

BETA 634

  • fixed: some minor graphical issues with AX / User Controls, in particular NewTab
  • fixed: (regression in BETA 633) form designer events list not correct until an edit has been made
  • fixed: removed incorrect notice during build "[BUILD] failed to use project.iconForm setting; form '(None)'..."

BETA 635

  • improved: general IDE editing performance by tweaking the DIAGNOSTICS panel syncing [ KemoHena, discord ]
  • updated: About window [ sokinkeso, discord ]

BETA 636

  • fixed: (regression since BETA 623) Controls.Add() was broken in compiled EXE/DLLs
  • fixed: (regression since BETA 623) opening the designer of a form that has control arrays could cause compiler memory corruption, leading to possible failed builds, project corruption, spontaneous combustion of your PC, etc

BETA 637

  • fixed: (regressions since BETA 632) contained controls in a Frame control do not display in the form designer
  • fixed: some IDE modal dialogs did not respond to ESC key [ wqweto, discord ]
  • improved: when opening a VBP project, the IDE will now automatically switch to win32 architecture
  • fixed: some edge cases around parser type suffix handling [ DrBobby, discord ]
  • improved: Return statement without GoSub compilation error is now reported correctly rather than 'Internal Error'

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