Developmental History for ForthForm

In the beginning...

ForthForm was primarily undertaken as an exercise to develope an alternative to DiaEdit, the dialog compiler from Michael Hillerström. I wanted easier access to my controls, plus too I had developed some extended controls I wanted to be able to use in my dialogs. For a time developement was slow because of laziness since DiaEdit was doing some of what I wanted. However, I was really motivated when for some inexplicable reason DiaEdit stopped working. Regardless of what I did, reinstalling, deleting all registry entries and reinstalling, nothing would work. This lead to my focusing attention on writing a working application ForthForm. On achieving this developement again slowed. After posting to the Win32Forth group at Yahoo! however, developemental interest was renewed, not to mention bugs found that I never knew existed!

I am of the opinion that I don't know everything (almost but not all :-) ), so by distributing the source I am hoping others will continue to contribute to its developement, so that it could perhaps become something really useful.

The following is a developement history, starting at the latest.

Friday, March 16 2007 - Added the ability to load all supported files (.ff, .tdf, .mdf) from the command line.

Thursday, January 11 2007 - Bug fix for static labels. Bitmap.f not loaded when control has an image, Been there for a while. Probably because I have never used static labels! Thanks to Dick for bringing it to my attention.

Saturday, December 30 2006 - Implemented a little mechanism to use the arrow keys when adjusting controls. For those times when you've selected controls and then moved them out of the box. Just use the arrow keys to resize the box instead of redrawing it.

Sunday, December 24 2006 - In the past week or so got around to enhancing the toolbar design tool. After a whole year even! Ah well, better late than never!

Saturday, December 09 2006 - Updated the rebarcontrol to save more of its parameters in the registry.

Re-added the original way to add controls i.e single click adds one control only. It is turned off by default but the user can change it in the config file ( true to one-click?) or in the source and recompile.

Saturday, November 25 2006 - Turns out the toolbar problem was related to this XP manifest file or something like that. Thanks to Rod for the fix.

November 10, 2006 - Realize that the PreviewWindow would not show the bitmap when creating toolbars. Seems that "dc.hdc" in the on_paint routine no longer works; had to use "GetHandle: dc" instead.

October 22, 2006 - After _FOUR MONTHS_ I have finally found the bug! In July I realized that closing multiple forms that were opened and then exiting the program it would not close. Again I had to close it from the task manager. The trouble was using ~: in the control object. It seems this default disposing method misbehaves when its code disposes another dynamic object. Four months!!! oh man....

Thing is now another bug has popped up. Some change by someone somewhere has broken the toolbar code for customizable toolbars. Once a change has been made the bitmaps disappear. The changes are saved in the registry but they aren't being restored. I wonder if this the reason the toolbars in the IDE were made non-customizable? Fix one, another is broken. Ah well...

BTW, the above problem affects all programs that use toolbar.f, including the example at the end of toolbar.f.

June 22, 2006 - Separated the toolbars into two, the main toolbar and the control toolbar. Both are still contained in the rebarcontrol. Played around with docking and undocking the toolbars using code from RebarControlDemo.f. Except for a few issues it works ok. Maybe I'll add this feature later.

May 27, 2006 - Updated the splitter-window templates using Rod Oakford techniques. Much less code and much easier to modify. Thanks Rod!

April 30, 2006 - Added the ability to reposition the rebar according - top, bottom , left, right - to preference. When left or right is selected the Forms List control is disabled. It's too narrow to see the names of the forms anyway.

February 11, 2006 - Found another change in ExControls.f that broke a portion of ForthForm's code. The stack requirements for the GetString: method in the ListBox class was changed. Caused a crashed in ChangeTabOrder.Hmmm...

Modified the control and form property dialogs to use spinnercontrols. Results in less code.

February 10, 2006 - Added provision for a spinner control. Not quite implemented as the rest ( own button in toolbar, id etc ) but... ok ok, I am feeling a little lazy right now but hey, it works!

In the process of the above found a bug in ExControls.f introduced when optimizations were added by someone. In the UpDowncontrol WindowStyle: method an 'OR' was missing.

January 24, 2006 - Added error checking for spaces in the names of forms and controls. Prompted after being puzzled why a form wasn't testing and no indication as to the reason.

November 24, 2005 - Improved object of FileWindow class. Among other things, it displays the associated icons for each file. For directories I use my own bitmap for now.

November 08, 2005 - Added a routine to close all ForthForm windows automatically. Been trying to figure out how to do that for a while, instead of having to add the close routine for every form to the close method for the main window. Seems to work now!

November 06, 2005 - I think I figured out the console problem. Seems to have been a bug in the routine to check the integrity of a file. Newing and disposing objects before main window ( or some reason! ) seems to be a no-no.

November 03, 2005 - Updated to use gdiFont class.

November 01, 2005 - Working on enhancing the toolbar design tool.

October 28, 2005 - Implemented help system as a child window of the main window. Found use for that empty space. I will go along with it for a while to see if I will keep it.

I've been noticing that when I am running ForthForm from within the console and I close the main window and exit W32F it ( W32F i.e ) is not closing. I have to close it from the task manager. This is on WinXP Pro. I will have to make some time to debug this but I suspect it will be awhile before I figure out the reason.

October 24, 2005 - Discovered and fixed a bug in the "Move to Back" and "Bring to front" routines. A wonder they ever worked! But they used to, I think...So much for bug free!

Not too long afterwards need to get some insect spray around here. Too many bugs! Fixed one in the routine that saves changes to a control.

October 21, 2005 - Minor mod to allow sequential control creation. The last control selected from the toolbar will always be created until reset. Slightly different to what is used to but I think more intuitive in designing a form, yes?

October 20, 2005 - Added error checking of a file before opening.

Discovered a lurking bug tonight when I tried to save a blank form, something I had never tried before. Resulted in accessing a null object. It's been there for a while... ( I wonder if ForthForm will ever be bug free!...yeah right)

September 25, 2005 - Ability to change font for a control added. Available from the right click menu.

September 24, 2005 - Adding the ability to change the font in a control. Noticed something interesting tonight while testing; it seems comboboxes and their derivatives have a minimum size requirement.

September 03, 2005 - Property sheet ( yes I said sheet!) template completed. Also add menu items to start SciEditMdi and Project Manager from ForthForm.

August 26, 2005 - Adding the ability to compile existing forms to simulate a property form ( did I say sheet?).

August 20, 2005 - With a slight mod to SciEditMdi forms, menus etc. can be sent to SciEditMdi from ForthForm for editing. SciEdit must be running for this to happen. If it isn't the internal editor FormPad will be used.

August 11, 2005 - Removed Code Editor and reused FormPad. Integration of components is foreseen for the future and rather than have dual editors I will try to see if I can integrate with SciEditMdi. I just need to figure how to get SciEdit to load a file from memory! Maybe shared memory or via clipboard or...

June 13, 2005 - Slight mods to box drawing routines.

June 06, 2005 - Added definitions for small footprint mode today...then discarded them. I realize that adjusting the window size to be just big enough for the toolbar and the statusbar would do the same thing, since the size will be saved and restored.

May 27, 2005 - Modified FileWindow object in the code editor to use a combolist control instead of a textbox to show selected path. This displays not only the current path but allows a path history to be kept and revisited quickly.

Converted the "Apply" and "Close" buttons in the Properties window to dual image buttons with text. Really just an example of how to use them.

May 16, 2005 - Finally solved intermittent bug when selecting generic control. Toolbar button would not reset.

April 23, 2005 - Additional way to add a control, normal click and drag or just click to create a control of default size.

April 16, 2005 - Added Code Editor. Essentially a modified SciEdit in a splitter window with a filelister object.

March 18, 2005 - Added the ability to make a form view only. No changes will be allowed when a form is locked. This is accessible from the form popup menu.

March 13, 2005 - Found that elusive bug having to do with sizing forms. In the SaveProperties function I was late binding the Window style; I should have been using the Window style of the ActiveForm. So simple yet so elusive! (I think it's because I copied the routine from the Form class).

March 11, 2005 - Minor changes for better synching with system colors. If settings are changed all forms will be automatically updated. You can also select 'Refresh' from a any form's popup menu to update all open forms ( in case for some reason they don't).

March 05, 2005 - Merge form property, control property and group action into a tabcontrol. Interestingly doing so shows up a long time bug with sizing forms from the property window. Let us see how we can fix this...

February 25, 2005 - Added ability to hide or show the monitor window.

February 13, 2005 -Fixed a bug in the FormProperties dialog.

February 12, 2005 -Made a little change in menus to enable/disable some options according to what is being done.

February 06, 2005 -Updated GroupAction dialog to allow shifting and sizing of a group of controls by a specified value.

January 08, 2005 -Tidy and rearrange some code, e.g menu definition now in its own file. Also added more comments to source.

October 04, 2004 -Have gotten certain way with the menu generator. It can read a menu definition from source code. In the future extended compilation will allow menus with such options as bitmaps and easily accessible ids.

September 29, 2004 -Added a tabcontrol to the list of controls.

September 23, 2004 -Added a folder tree browser to the list of controls.

September 21, 2004 -A status bar is now optional for a form.

September 13, 2004 -Added options to change the super class of a form. A form can now be compiled as a child-window, MDI dialog or default dialogwindow.

September 10, 2004 -Have been working on the menu generator for a few days now. Its usefulness in practice is questionable but at least developing it is interesting.

August 31, 2004 - Added option to compile a splitter window as a child window.

August 27, 2004 -Using Scintilla control in FormPad for editing forms or whatever.

August 07, 2004 -Added splitter windows template generator for 6 templates. Further templates can be derived by adapting an existing one.

July 31, 2004 -Added built in help display using the new Html control.

July 30, 2004 - Fully implemented a child window control. The positon and dimensions of the control are saved in the form and available to allow for any control not directly supported by ForthForm.

July 25, 2004 - Finally figured out the solution to the bitmap toolbar puzzle, thanks to some Liberty Basic code, WIN32 API help and some interactive testing. I knew there had to be a better way!

July 12, 2004- Discovered a serious bug in change control type. The code that was added to allow the control to maintain its position in the tab order was incorrect. Fixed.

July 10, 2004- saved some mouse right clicking. Added the "Group Action" dialog.

July 05, 2004 - removed that XP specific toolbar. I never liked it anyway :-)

July 04, 2004 - Minor bug fix for when using background image and rebar control resized. Added a toolbar specially for when running under Windows XP. Like I said, there gotta be a better way!

June 08, 2004 04:27:55 PM - ForthForm now opens multiple files simultaneously.

May 15, 2004 08:57:31 PM - Factored out Project Manager into a separate application. I figure it will make the distribution too large.

6th May, 2004 - Reduce screen estate for editing form property.

30th April, 2004 - Added Project Manager. In addition relative load point versions no longer supported. Sorry!

20th April, 2004 - Implemented a rebar control. Further information on rebar controls can be found in "Rebar.txt" or the MSDN website. Replaced the Forms List Window with a combocontrol.

7th April, 2004 - Changing a control type keeps position in tab order.

3rd April, 2004 - Notice a bug in opening .ff file from explorer. Fixed

31st March, 2004 - Added a feature to allow toolbar creation.

20th March 2004 - Merge session, compile all open forms to one file.

14th March 2004 - Added FormPad, an internal editor/viewer for forms and toolbars.

January 01, 2004 10:46:00 AM - HTML documentation for ForthForm in progress.

December 07, 2003 02:03:50 AM - bug fix in displaying of default bitmap for static bitmaps and bitmap buttons.

December 05, 2003 10:50:12 PM - Added ChangeControl to menu. Allows the changing
of control type e.g radiobox to checkbox. To change a control first select the control, check the type to change to in the toolbar and then select 'Change' from the menu.

November 28, 2003 11:57:19 PM - Loading all auxiliary files in ForthForm vocabulary.

Couple of bug fixes. Don't ever forget to initialize object integers! 

dbu November 8th, 2003 - 9:53 - Added simple Command-Line-Handling for opening a ForthForm-File (*.ff) via double-click in Windows-Explorer

October 19, 2003 08:58:11 PM - I figured it out! I now understand why flat toolbars were displaying on a white background. It has to do with the brush registered in the window class. A parent repaints its child windows and the WNDCLASS for the window object in W32F had a white brush by default. If set to NULL the child is painted the default system color. My flat toolbars are now displayed correctly.

October 6th, 2003 - 0:00 - Modified EditControlProperty form to use less screen real estate.

Forms now compiled have an extension of .frm. This means that both a file that uses a form and the form itself can have the same name. Examples of this are Preferences.f and Preferences.frm, and ControlPropertyII.f and ControlPropertyII.frm.

September 29th, 2003 - 20:12 - Implemented toolbar support using Windows library class. Both toolbars were replaced by one customizable toolbar.

ForthForm now uses the registry to save its location and size as well as user preferences.

September 19th, 2003 - 1:10 - Made the background image support optional in preparation for the distribution of ForthForm with Win32Forth releases. Anyone so desiring can define a dummy word "withbgnd" (without quotes) before loading ForthForm to include background image support. They will however have to obtain the FreeImage dynamic link library on their own.

Fixed an interesting bug. Normally I would not think to edit a non-existent form but in the first release if that was tried either a crash would result or the editor would edit a file by the name "untitled.f". When other persons are going to be using your program you must be prepared for anything. I guess that's why they are so many beta releases.

September 15th, 2003 - 16:23 - Implemented a feature to save current status of system by "Save Session". Right now any open forms and the BackGroundImage are saved. They can be restored by "Load Session".

September 13th, 2003 - 0:27 - I've finally come up with what I think is a workable solution. Almost from conception I have wondered how I could make forms easily modifiable. If a form was created for an application and modified it would normally be difficult to add any further controls, due to how controls are implemented in Win32Forth. Recompiling the form would erase any application specific modications. My work around is to make a control optionally global. Therefore controls that would be needed by the application would be made global. These would then be reference directly by name. Analysing a form I realize that primarily the WM_COMMAND and the ParentWindow: method are the most used. Methods have therefore been added that allow setting the parent window globally as well as test the WM_COMMAND method. The form can be later modified without any adverse effect.
The following is a code example: ( see TestExample.f for a working example )

fload testform.frm \ load the form
GetHandle: ThemainWindow SetParent: frmTest \ required if form is a modal window
0 value obj
: dobutton ( h m w l id obj -- ) \ this is function for WM_COMMAND
to obj
case GetID: btnOK \ this button is global
of ... endof
GetID: btnCancel \ global
of ... endof
' dobutton SetCommand: frmTest \ install function
Start: frmtest \ start up the form
s" Hello there" SetText: txtHello \ another global button
Disable: btnOk
and so forth...

If I decide to rearrange the controls in the form it wouldn't affect my code. Of course the form can still be modified directly as usual or pasted into one's program.

September 9th, 2003 - 23:05 - Some minor changes to improve performance. Now drawing works on any number of colors display. Why didn't someone tell me about the SetRop2 function?

September 7th, 2003 - 22:23 - Added a simple feature to compiled forms to make them behave like modal dialog boxes. If a form is compiled as a modal form (from the properties window) and the form has a parent window, when it is started the form will have to be closed before the parent window can be accessed. Some of the forms in ForthForm have been made modal as well.

August 29th, 2003 - 22:16 - Updated ForthForm with a feature suggested by Dirk Busch. Now when the control property window is open switching between controls automatically updates the window. This is actually quite a useful feature. However, I haven't done the same for the form property window. To me editing control properties is a far more frequent occurrence than editing those of forms.

Minor changes in menu items to allow better understanding of function. Also some minor bug fixes.

I am also going to try to improve code documentation. I like to think that my code is self-documenting but...

July 24th, 2003 - 17:04 - I've discovered why I can't run Forthform twice from the command line. For some reason in version 6.06 and also in version 6.07 the method CloseMenu: in class Menubar was made an empty method, so the menu wasn't being deleted when the mainwindow was closed. This was not the case with version 4.2671 or version 6.0513. Oh...the stress!

July 22nd, 2003 - 21:38 - Added BackGroundImage to ForthForm. Right click pops up a menu with some options, including allowing it to be changed.

July 7th, 2003 - 19:54 - I've now discovered that I can't run Forthform twice from the commandline. For some reason CreateWindowEx in MainWindow is failing. Again previous versions work fine. Here we go again....

July 1st, 2003 - 0:03 - Ahem.. Looks like these updates are showing up my poor coding. Seems that the problem in my support file was that I forgot to close the module with MODULE. A control character at the end of "Bitmap.f" was responsible for the problem with that file, probably inserted whilst copying.

June 25th, 2003 - 19:39 - It seems everytime I upgrade I encounter some quirk. I installed version 6.06 today and one of my support files wouldn't load. I had some comments after \s at the bottom of Excontrols.f and it seem to try to load the comments. Interestingly this same file loaded without a problem in ver 4 and 6.05. Also one my files isn't loading. System is saying it can't find the word "load-bitmap" from file "Bitmap.f" even though it shows the file has been loaded when I do a ".loaded" Oh well...

May 21st, 2003 - 20:41 - Added monitor window. To position form on screen just position window on monitor.

March 30th, 2003 - 11:11 - Hadn't got around to making any changes for a while. I installed version 6.05 and found I was getting a host of problems. What was peculiar was that when I fload in version 4.2 it worked fine. After much head scratching and distress I realize that class integers that were evidently automatically zeroed in ver 4.2 weren't being zeroed in ver 6.05. Also the On_Paint: method in class Toolbar was causing my toolbar to shift all over the place. This was related to the method that sets ints originx and originy in super class Window using GetWindowRect which returns absolute screen coordinates.

May 1st, 2001 - 2:10 - Implemented multiple form support in ForthForm. Am thinking now of implementing dialog box support using Dialogrc.f. At this time not all controls supported in ForthForm will be available in dialog boxes. Perhaps when I fully understand (?) windows dialogs better.

April 27th, 2001 - 21:16 - Adapting ForthForm to multiple form support but not using Windows MDI windows.

October 16th, 2000 - 22:18 - Using actual controls in forms. There are subclassed so that they will behave themselves.

September 4th, 2000 - 22:29 - ForthForm is working! Added form and controledit forms. All forms used in ForthForm were designed, compiled and edited in ForthForm! I am considering converting it to a Multiple Document Interface (MDI) format. May also add other controls if inclination permits.

August 21st, 2000 - 22:21 - Functioning prototype with paste, test and compile and interfacing with WinView and Forth console . After being dormant for a while I decided against using child windows for the controls on the form. Will add 'change tab order' properties window and edit control properties.

April 9th, 2000 - 19:33 - Development begins.


Back to main page