Version 1.3 changelog

Hello, everyone. I’m releasing v1.3 today, and I hope you guys will enjoy this update.

New Feature

Version 1.3 brings one major feature, which hopefully will be very helpful to everyone maintaining InForm-based projects.

Up until v1.2, you could load a .frm file you had created earlier, make edits to it and export the updated form file, but you’d have to make manual changes to the accompanying .bas file. Now InForm is a tad smarter on that front and it will cater for that so you don’t have to.

Adding, renaming, deleting controls will all reflect in your existing .bas file, all while preserving existing code you may have already added. That means more productivity, since you’ll be able to focus on what really matters for your development workflow.

If anything goes wrong, don’t worry. Your files will still be fully backed up before any changes are performed, so you can always restore them.

Fixes and other changes

The core library, InForm.ui, has now been split into two files: will come at the top and InForm.ui will now come at the end of a generated InForm program. That makes sure you get faster feedback from the compiler/error checker in QB64’s IDE, since your sub procedures will be compiled first, then InForm last.

There have also been several fixes under the hood. You can check them out in our commit log on GitHub:…v1.3

Thanks to everyone for your interest in QB64 + InForm. Let me know if any issues arise.

Version 1.2 changelog

Happy Halloween, y’all! No tricks: here’s the changelog of v1.2, released today.

I’m adding to this list everything new since InForm beta 8, since that was the last public feature update (see video).

New features:

  • New binding feature for controls – bind controls’ properties so they affect each other at runtime automatically.
  • New .BypassSelectOnFocus for TextBox controls.
  • [Windows] You can now drag a picture onto the form you’re editing to add a PictureBox control.
  • Added option to check for updates on demand (UiEditor).
  • Added new development channel to enable receiving beta updates automatically.
  • Added ability to set a Mask() for labels, following PRINT USING rules.
  • The built-in VGA font is now selectable in the font list.
  • ProgressBar controls can now have multi-line captions (with the SetCaption method, by using \n as a new line indicator).


  • Controls can no longer get focus if they are in a hidden container.
  • Hides blinking cursor in TextBox controls if the window is not active.
  • Forms with GIF images with the AutoPlay setting are now properly loaded into the editor.
  • Fixes “Division by zero” errors that occurred when manipulating an empty ListBox or DropdownList control.
  • Fixes an error that would keep the font list stuck in TextBox mode when using built-in fonts.
  • Adjusts communication between UiEditor and UiEditorPreview so they don’t timeout in some Linux distros.
  • Fixes a bug that prevented loading forms with controls in frames.
  • Fixes a bug that wouldn’t allow a user to “Retry” downloading when using the Setup or Updater.
  • Fixes TextBox controls crashing programs when getting focus in some scenarios.

Version 1.0 is out!

Without much fanfare, I’m rolling out today version 1.0 of InForm. If you have beta version 7 or 8, you will be prompted to update to version 1.0 next time you launch InForm Designer.

Since Beta 8 was released, a year ago, I’ve only made a few tweaks to things I had noticed were still slightly off. Today’s release contains all of those (which would have been called Beta 9 otherwise), but a year of testing has proven me it was stable enough to finally leave the beta phase.

Starting with this version, the internal __UI_VersionNumber will contain the build number, whereas the __UI_Version constant will contain the user-friendly version string, “v1.0” in this case.

As usual, please let me know how the update process goes and if you happen to find any issues with the latest version of InForm, please let me know in the dedicated InForm area in our forum, and you can also contact me on Twitter (@FellippeHeitor) and via email (

New version: Beta version 8

InForm’s auto-updater in action

Roughly five months after the release of Beta 7, InForm finally reaches another milestone with enough improvements and new features to justify a version bump.

This new release focused mainly on stability, but you’ll still find some interesting new features to play with and enhance your applications.

If you get Beta 8, please let me know how the experience with it goes. You can report issues or make comments at the dedicated InForm board at our forum.

Here’s some of what’s been fixed and some of what’s new as well.

Beta 8 Changelog


  • New GIF player extension.
    • Zom-B wrote a GIF player and shared it with the QB64 community (you can find his original code in our wiki). This release of InForm incorporates Zom-B’s code into the first extension to InForm. Just add a PictureBox control and load an animated GIF. The rest is done automatically for you.
  • New .AutoScroll property for ListBox controls.
    • This property will have the list automatically scroll when a new item is added. Although the property was already available in Beta 7, only now it has been made available in the Editor.
  • .Value property of NumericTextBox controls now contains the current value entered.
    • In the previous version, you’d have to read the Text() property of a NumericTextBox field and convert it with VAL() to use in calculations. This is now done automatically for you and all you have to do is read the .Value property of your control as in MyValue% = Control(MyNumericTextBox1).Value.
  • New .AutoSize property for labels.
    • Labels would automatically resize at design time, but now you can also set a single-line label to adjust at runtime by setting the .AutoSize property to True.
  • New .BorderSize property.
    • All controls that accept the .HasBorder property can now have their border size adjusted to up to 10 pixels.
  • New SelectItem function for List/DropdownList controls.
    • Syntax:
      • Found%% = SelectItem(ControlID, “Item”).
    • Can be used to select an item by contents instead of by index. If the list contains multiple identical items, the first is selected.
    • Adjusts the .Value property if the item is found and returns True.
    • If item is not found, returns False.
  • Controls can now have a key combination assigned so they can be triggered using the keyboard.
    • It’s also the easiest way to add a key combo to menu items.


  • Controls with boolean values now have a True/False list to choose from. No longer having to type 0 or -1 to set them at design time.
  • System fonts and font sizes are now in lists for ease of selection.
  • TCP/IP is now used to communicate between the editor and the preview window.
    • The previous approach involved constantly reading a file on disk to exchange data. Now, because of the new technique, your operating system may ask you permission to allow InForm to communicate via TCP/IP, which you should grant in order to allow it to work properly.
  • New Paste List button allows for easy filling of ListBox/DropdownList controls.
  • Swapping of similar control types now possible.
    • A menu bar item can be turned into a contextual menu, a text box into a numeric text box, a toggle switch into a checkbox, a listbox into a dropdown list. Look for the ‘Convert to’ option in the Edit menu or by right-clicking controls in the preview.
  • Hitting ENTER is no longer required to apply changes to control properties.
  • ContextMenus can now be easily created and associated with controls.
  • Menus can now have sub-menus.
  • Allows TrackBar controls to have their “ticks” hidden.
  • File menu now contains a list of recently opened files.
  • New “Save As…” dialog.
    • Up to Beta 7, the forms you designed would be saved with an automatic name taken from the Form’s caption property and would be saved in QB64’s main folder. Now you can specify a file name and a path at save time with the new “Save as…” dialog.

Beta 7 is here!

InForm for QB64 Beta 7 brings a redesigned interface for an enhanced user experience as well as a handful of improvements, new functionality and bug fixes. Check out some of what’s new:

(Check out this video to *see* some of what’s new:

– Major interface overhaul, with control properties more easily accessible.

– Snap to edges feature improved to have controls detect each other snap by proximity.

– New auto-size feature for labels at design time.

– Right-click a button to “Set as default” so it can be triggered with Enter at runtime.

– New NumericTextBox control to get numeric input from your users without having to worry about validating its contents.

– The mask property can now be set and tested at design time so you can get user input in a specific format.

– Clipboard operations rewritten from the ground up: controls can now be copied, cut and pasted much more reliably. Copied controls now remain in memory even after a form or even InForm itself is closed, so that you can transfer controls between existing files easily.

– New SetFocus to change the focus to another control programmatically.

– InForm now attempts to preserve your existing code when you make edits, which makes it easier than ever to edit existing programs.

– To select multiple controls you can now click them while holding down the Ctrl key. You can now also use Shift to select a range of controls (click the first control, hold shift, then click the last control in the range you’d like to have selected at once).

– Menus items can be set to have a Bullet marker. Groups of menu items (separated by a hyphen) behave just like a group of Radio buttons in a form, allowing you to have options that mutually exclude each other in your menus.

– Right-click the form preview to “Add menu bar control”.

– Beta 7 now includes an online updater. Whenever a new version is made available at our server, you will be notified and asked to update; That means that Beta 7 is the last version of InForm you will have to manually download. Auto-updating can be disabled in the Options menu.

A new approach to updates

The first public version of InForm, dubbed Beta 1, was made available after 4 months of coding, with constant input from several good friends who are usually lurking with me at the chat room. Then, as the following year progressed, along came betas 2, 3, 4 and 5. Each new update brought some novelty and massive work on stability.

The work on beta 6 marked a new approach to updates. GitHub’s issues and milestones features have come in handy to allow me to list whatever I found in InForm that needed my attention as well as to keep my own wish list organized. Each new issue closed increases a progress bar that gets you closer to your goal and that’s a game changer.

The work on Beta 6 was already based on this approach. You can see here the list of issues that were addressed in order to reach Beta 6:

“Miles to go before I sleep…”

Current milestone has been labeled Beta 7 and I have a few issues to fix and a few new features to add. You can follow along as development goes at

Besides following you can also add issues and suggest new features at (make sure to have a look at the existing issues to see if your idea maybe has already made it to the wishlist.

That’s a year and a few betas later now

Ah, he’s doing the Google thing with labeling it “beta” then. Now it’s clear.

Well, it’s January of 2018 now and it’s been a while since I first released InForm and since this website went up to promote it. As I hadn’t until today written an update post on the current state of affairs, here’s one to try to cover what’s been done so far.

InForm is currently more stable, and we have a few new features here and there, but it’s still mostly the same InForm of launch day. It does the job and I’m glad it’s being used by others besides me out there.

I still haven’t gotten around to making it easily customizable theme-wise, so it still has that Windows XP look to it, as I worried about internals more than about looks after release.

The editor can now load a saved form from a .frm file instead of only loading from a .frmbin file. The advantages of this approach are that (i) you can manually make changes to the .frm file, which is nothing but a regular QB64 source file with the proper function calls to recreate your form and still be able to edit it visually later and also that (ii) you only need to keep one file saved with your project if you so wish.

I also added a small utility that allows you to import a .FRM file from old VBDOS 1.00. That means that, to some extent, you can import that old project you had lying in your floppy drives and give it a modern go with InForm and QB64.

User HeadApe on GitHub made a contribution allowing the draw order of controls to be changed and that marks the first time an external contributor added to the InForm codebase via GitHub. The library already contained contributions by Luke Ceddia as well as code borrowed from other users of QB64, all of which are credited in the code itself, of course. It feels nice to have the project go bigger with others helping improve upon it.

There is now a new event __UI_FormResized that is triggered, you guessed it, as soon as the form is resized, provided you created it with the .CanResize property set to True. This allows you to make custom changes to the layout depending on the current form size, if you wish to.

I’m adding a new toggle control too. The code for it is already in the beta 5 package but you can only add it manually by editing your .frm files for now. The easiest way at the moment is to add a placeholder control like a Picture Box at design time and edit the .frm file manually before compiling and making it be of type __UI_Type_ToggleSwitch. This will of course be added to the editor in the next release. A quick video demo of it can be seen below:

There are several other tweaks and fixes and you can keep posted on the changes by following the commit history on GitHub here:

Thanks for using InForm!


InForm’s up!

Back in September I started working on a GUI prototype.

Another one, you just thought. I know the feeling.

A very frequent request from any community of BASIC programmers is for a working GUI, a decent framework, a way to quickly have an interface up so you can focus on code, actual functionality.

However, it is also a tradition amongst BASIC programmers to keep constantly trying to reinvent the wheel. Maybe the pleasure resides in the achievement of a well-known paradigm in BASIC! See, ma? I click it and it works!

I kept seeing the reinvented wheels, even in early alpha stages, and thinking hey, this is awesome! How do we start creating new programs with it? And the answer was always a bunch of complicated instructions that required me to learn a whole new language of its own so I could “design” a form. That is, (i) imagine it, (ii) throw a lot of coordinates into code and (iii) see if it ended up where I expected it to (iv) repeat until exhausted. That just didn’t feel right.

InForm was born out of all of those initial urges. However, unlike most projects out there, it’s just gotten to see the light in full glory. Yeah, it’s a beta, but I’ve worked my fingertips off for the past months to get it to a working state, so that I wouldn’t release a half-baked product, but a working GUI, a decent framework, a way to quickly have an interface up so you can focus on code, actual functionality.

And today I have the pleasure of sharing it with you, so you can test the bits out of it and let me know where it can be improved.

It’s all open source and this initial release uses Windows XP’s imagery to display controls on the main window surface.

A proof of concept is that InForm was created using InForm. How cool is that?

Thanks for your interest! I’m looking forward to your feedback.