Beta 8 Changelog

Overall:

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.

UiEditor:

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.

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.

– 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.

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 #qb64 channel on Freenode. 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.

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:

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?