twinBASIC Update: June 19, 2022
Highlights include improved support for 3rd-party ActiveX controls, a new location for tB IDE releases, and a discussion about where to put non-visual controls.
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)
ActiveX Controls: Massive Improvements and Bug Fixes
Based on the activity in the Github project, it appears the main focus of Wayne's efforts over the past week centered around improving support for embedding third-party ActiveX controls on twinBASIC forms.
- Support for CODEJOCK Xtreme ActiveX controls in BETA 53
- ActiveX component can now show their custom property pages in BETA 54
- Licensed ActiveX controls now supported in BETA 55
- 'Invalid Property Value' error for SSTab control fixed in BETA 56
- ActiveX Control IDE preview snapshots completely reworked in beta 57
Around the Web
New Location for twinBASIC IDE Releases
The mega-IDE thread has been locked. From moderator Ben Clothier:
Note: As per discussion on the discord, the thread will be now locked. The feedback will be split off into their own issues to aid tracking and avoid sprawling and potentially missing issues reported. If you have any issues to report about the beta, please open a separate issue going forward.
Furthermore, we are looking at improving how releases will be handled so do keep a eye for further update on how new releases will be announced here. Thanks!
And here is the aforeshadowed* announcement from Wayne:
From now on, all new releases will be uploaded to GitHub and available at the following link:
* Yes, I made this word up, but I think it fits in this very specific situation.
Section for non-visual controls
Ben Clothier opened up a discussion about how best to handle "non-visual" controls on twinBASIC forms.
For example, in Access and VB6 a timer "control" gets added to a form with layout properties like "Left" and "Top" despite the fact that the control will never be visible to the user at runtime. This same behavior applies to certain ActiveX controls, such as third-party TWAIN controls for integrating with hardware scanners. It's always felt weird to me that these types of controls–that cannot be made visible to the user–must still get laid out somewhere on the form in design view.
Of course, if you don't put those controls on the form grid somewhere, where do you put them? That is an interesting question indeed.
Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.
NOTE: Development of the twinBASIC VSCode extension is paused until 2023 so that efforts can be focused on the new IDE.
- improved: IDE control rendering, allowing many more ActiveX controls to render properly inside the IDE [ https://github.com//issues/903#issuecomment-1159370978 ]
- fixed: BackColor now effective for controls with VisualStyles set
- fixed: issue with UserControls and Implements-Via feature
- fixed: Sample4: MyVBEAddIn regressions causing compilation errors
- fixed: lots of issues with ActiveX property pages
- fixed: SSTAB Click event not firing [ https://github.com//issues/905 ]
- improved: form designer mouse click events are now passed through to the ActiveX HWND, allowing some controls like SSTAB to change tabs from the designer [ https://github.com//issues/905 ]
- fixed: default names of new controls now match VBx [ https://github.com//issues/907 ]
- fixed: 'Control' data type was not exposed publicly [ https://github.com//issues/912 ]
BETA 55 is now available:
- added: support for licensed ActiveX objects
- fixed: when adding new ActiveX controls to a form, the designer no longer shortens the generated names [ https://github.com/twinBASIC IDE -- BETA RELEASE #772#issuecomment-1156407273 ]
- fixed: Screen object was not always initialized when running through the IDE/debugger
- fixed: shadowing of members with Implements-Via [ https://github.com/Reference errors for projects with WinNativeControls & Access object library #894 ]
- improved: added 'ActiveX Properties...' context menu option for right-click on form designer Ax controls
BETA 54 is now available:
- improved: ActiveX component can now show their custom property pages via the '(Custom)' property in the form designer
- fixed: ActiveX controls z-order issue [ https://github.com/twinBASIC IDE -- BETA RELEASE #772#issuecomment-1152911326 ]
- fixed: can't access Implements-Via proxy procedures inside a With block [ https://github.com/twinBASIC IDE -- BETA RELEASE #772#issuecomment-1152911326 ]
- added: new IDE setting of 'IDE: Data Execution Prevention (DEP)', defaults to ON (needs to be off for some components, like gif89)
- fixed: form Left/Top/Width/Height properties can now be set programmatically at runtime [ https://github.com/twinBASIC IDE -- BETA RELEASE #772#issuecomment-1152911326 ]
BETA 53 is now available:
- fixed: IStream::Stat implementation, causing crash in using some ActiveX controls
- fixed: support for CODEJOCK Xtreme ActiveX controls (though tabbing is not working quite right yet)
- fixed: LBound/UBound not working if the value passed in is a Byref-Variant param [ https://github.com/Forwarded ParamArray: Ubound/Lbound do not return values with correct input #887 ]
- improved: monaco error widget now auto-wraps long error descriptions [ https://github.com/Long error message runs off the screen #885 ]
- improved: further improvements to Implements-Via support