twinBASIC Update: September 25, 2022

Highlights include long-awaited VB6 form import support (experimental) and a community-led GitHub project to provide official documentation for twinBASIC.

twinBASIC Update: September 25, 2022

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

Initial Support for Importing VB6 Forms

The moment many VB6 programmers have been waiting for is finally here.  

While the implementation is far from complete, twinBASIC now has experimental support for importing VB6 form objects.  Not every form control is supported yet.  For those not yet supported, they will get converted to PictureBox controls upon import.  

All control properties, methods, and events are either supported or have placeholders to make it clear what still needs to be done.  There is also a new [Unimplemented] attribute to identify placeholder methods that are not yet implemented.

List of ALL Missing/Unimplemented Control Properties and Methods

Wayne created a pinned GitHub issue that lists the control properties and methods that have not yet been implemented:

Here is a relatively thorough list of all the missing properties and methods for each UI control, as of the current release of twinBASIC.

These properties and methods do exist, but they are marked as [ Unimplemented ]. As of beta 125, they will appear highlighted RED in the form designer, and you will see a compiler warning if you have code that references them.

Please do not open further issues for these unimplemented items.

This issue will be pinned for tracking purposes, and will be kept up-to-date as they get implemented.

IDE Form Designer Usability Improvements

There have been several changes to the form designer to improve usability based on user feedback.

  • Invisible controls have more opacity in the designer (opacity reduced by 20% rather than 70%)
  • Form designer grid dots are smaller, sharper, and generally less obtrusive

Wayne does not want to expose a lot of user settings.  Too many settings can be overwhelming for new users.  It can also lead to a wider variety of user experiences, resulting in confusion in forums when advanced users may forget that they customized their development environment with non-standard options.

In the long term, expect most development environment user interface customization to be in the form of themes that combine custom CSS and JavaScript to modify the Chromium-based Monaco code editor that forms the basis of the twinBASIC IDE.

Around the Web

twinBASIC Documentation

GitHub user webweenie (Sean T Scott?) has started a twinBASIC GitHub documentation project available here:

twinBASICDocs/reference.md at main · webweenie/twinBASICDocs
Contribute to webweenie/twinBASICDocs development by creating an account on GitHub.

The documentation is in its infancy (the repo is less than a week old), but the early structure looks very promising:

To be clear, the documentation is not written by the development team, but the lead maintainer has been soliciting and incorporating feedback from Wayne Phillips (who, for all intents and purposes, is the development team).

The documentation is in its very early stages, so I'm not sure what level of community involvement will be requested/welcomed.  If you are interested in contributing, head over to the docs channel on the twinBASIC Discord server and talk to user SeanTScott (follow the links in the article header if you have not already joined the twinBASIC Discord server).

Early VB6 Form Import Feedback

Over on GitHub, user CJCK has tested twinBASIC's .vbp import using beta 124 (the first to support form import).  The early returns are promising:

I am absolutely amazed that beta 124 can actual open our large commercial vb6 program ! What an amazing achievement from a small development team ! As can be expected, there are numerous errors, but based on a quick review, almost all the issues are related to a fairly small number of missing features (less than a dozen I would guess).

My sincerest thanks to Wayne and others who have helped to achieve this milestone. Please keep up the good work.

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.

BETA 124

  • added: EXPERIMENTAL support for importing VB6 forms (restrictions: ActiveX and unsupported controls get converted to PictureBox)
  • improved: temporary freeze fix applied to the PROBLEMS panel if >1000 problems to prevent sluggish IDE
  • fixed: Form.DpiScaleFactorX / DpiScaleFactorY should not be shown in the form designer
  • improved: (IDE) BROWSE.../Open Project can now be used to select either a twinproj, or VBP file for migration
  • fixed: subtle websocket implementation bug, causing IDE to not respond/save in some instances

BETA 125

  • fixed: importing VB6 forms that have menu items with assigned shortcut keys would cause an error during import
  • added: placeholders for all missing control properties, methods, and events
  • added: placeholder control for intrinsic control Data
  • added: placeholder control for intrinsic control OLE
  • added: placeholder control for intrinsic control Menu
  • added: [ Unimplemented ] attribute for alerting use of placeholder methods that are not yet implemented
  • added: all graphical members to Form class to match PictureBox (e.g. Circle, Print, etc)
  • fixed: added PictureDpiScaling property to Form/PictureBox/Image controls, default True, when False image is rendered as stored
  • improved: IDE toolbox order now matches VBx

BETA 126

  • fixed: potential crash in some instances when handling [ Unimplemented ] attribute [ Rexxitall, discord ]
  • fixed: z-order of imported VB6 controls [ https://github.com//issues/1190#issuecomment-1256554264 ]

BETA 127

  • fixed: Index property on controls was duplicated in a base class, causing type-library build failures during compilation of Forms [ https://github.com//issues/1192 ]
  • fixed: 'Invalid Picture' error during form load, for Image controls that had no image data defined [ https://github.com//issues/1191 ]

BETA 128

  • improved: invisible controls in the designer now have opacity reduced by 20% rather than 70% [ https://github.com//issues/1193 ]
  • improved: form designer grid dots are now a little sharper and less rounded [ https://github.com//issues/1193 ]
  • fixed: use of StrPtr in many controls API calls where vbNullString is not allowed [ https://github.com//issues/1194 ]
  • fixed: UserControls vtable layout in generated type libaries was incorrect [ msFaktura, private ]
  • improved: Form.ActiveControl is now implemented [ https://github.com//issues/1188 ]
  • improved: TextBox.Alignment is now implemented [ https://github.com//issues/1188 ]

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